У меня есть список URL-адресов, которые мне нужно вызвать и выполнить некоторые действия. Это уже работает отлично, но List очень большой, и выполнение занимает очень много времени.пять потоков, работающих над списком задач C#
Я думаю, что я мог бы ускорить работу программы, работая над 5 Urls одновременно с тем, что огромная часть времени выполнения - это программа, ожидающая ответа сервера Urls.
У меня есть список URL-адреса
List<string> urls = getmyurls();
А потом я перебор их
for (int i = 0; i < links.Count; i++)
{
List<string> result = dosomework(urls.ElementAt(i))
urls.AddRange(result);
}
Иногда я получаю некоторую дополнительная Urls вернулась, которые должны быть обработано тоже.
(код представляет собой пример, моя текущая программа структурирована немножко diffrent. Это минимальный пример, чтобы объяснить мою проблему.)
Я хочу, пять нитей работает функция «dosomework» в то же время , Всякий раз, когда один из них закончен, я хочу, чтобы он начинался с следующего URL-адреса.
Также: Сколько потоков вы бы выполнили?
Попробуйте найти. Библиотека параллельных taks. – CodeCaster
Если вы хотите быстро, откажитесь от своей упрощенной идеи о том, что больше потоков = больше скорости. Узнайте, как сделать асинхронный ввод-вывод, а не блокировать IO. – spender
Как упоминалось в CodeCaster, TPL - хорошее место для начала. Он определит для вас, сколько задач нужно выполнять параллельно и т. Д. И Parallel.For очень просто положить в –