блокирует слишком много времени, затем вы начинаете получать узкие места, так как «обратный вызов» в ContinueWith выполняется из рабочего пула потоков.

ом из моих проектов, который является своего рода агрегатором, я анализирую каналы, подкасты и т. Д. Из Интернета.

Если я использую последовательный подход, учитывая большое количество ресурсов, то на их обработку уходит довольно много времени (из-за сетевых проблем и тому подобного);

foreach(feed in feeds)
{
   read_from_web(feed)
   parse(feed)
}

Поэтому я хочу реализовать параллелизм и не могу решить, следует ли мне использовать ThreadPools для обработки рабочих потоков или просто полагаться на TPL для его сортировки.

ThreadPools наверняка справится со мной с помощью рабочих потоков, и я получу то, что ожидаю (а в средах с многоядерными процессорами также будут использоваться и другие ядра).

Но я все еще хочу рассмотреть TPL, поскольку это рекомендуемый метод, но я немного обеспокоен этим. Прежде всего я знаю, что TPL использует ThreadPools, но добавляет дополнительный уровень принятия решений. Меня больше всего беспокоит состояние, когда присутствует одноядерная среда. Если я не ошибаюсь, TPL начинается с количества рабочих потоков, равного количеству доступных процессорных ядер в начале версии. Я боюсь, что TPL даст результаты, аналогичные последовательному подходу для моего случая, связанного с IO.

Так что для операций, связанных с вводом-выводом (в моем случае чтение ресурсов из Интернета), лучше ли использовать ThreadPools и контролировать вещи, или лучше просто полагаться на TPL? Может ли TPL также использоваться в сценариях, связанных с вводом-выводом?

Обновить: Моя главная проблема в том, что -на одноядерном процессоре будет ли среда TPL вести себя как последовательный подход или все же будет предлагать параллелизм? Я уже читаюПараллельное программирование с Microsoft .NET и таккнига но не смог найти точного ответа на это.

Примечание: это перефразировка моего предыдущего вопроса [Можно ли использовать параллелизм потоков и параллелизм вместе? ] что было довольно неправильно сформулировано.

Ответы на вопрос(6)

Ваш ответ на вопрос