Я полагаю, что TPL обычно будет использовать один поток на ядро, если вы специально не укажете ему использовать больше. возможно , что он обнаружит, когда этого недостаточно - например, в вашем случае, когда ваши задачи будут проводить большую часть своего времени в ожидании данных.
Есть ли какая-то причина, по которой вы не можете использовать асинхронную загрузку из Интернета? Я подозреваю, что нет необходимости иметь поток на задачу или даже поток на ядро здесь. TPL облегчает различные аспекты асинхронного программирования, например, продолжения.
С точки зрения эффективности, ваше приложение на самом деле связано с процессором? Похоже, вам нужно получить максимально подходящий уровень параллелизма на стороне сети - это то, на чем стоит сконцентрироваться, если только вычисления не являются действительно тяжелыми.
ОБНОВЛЕНИЯ - НЕ ОТ ОРИГИНАЛЬНОГО АВТОРА
Ответ выше, как всегда, великолепен, но может вводить в заблуждение, поскольку в нем нет важных изменений в .NET 4.0 CLR.
Как говорит Андрас, текущая реализация TPL использует пул потоков, следовательно, будет использовать столько потоков, сколько требуется ( количество ядер не имеет значения ):
Task Parallel Library (TPL) - это коллекция новых классов
специально разработанный, чтобы сделать его проще и эффективнее выполнять
очень мелкозернистые параллельные рабочие нагрузки на современном оборудовании. TPL был
доступен отдельно в виде ОСАГО в течение некоторого времени и был включен в
Visual Studio 2010 CTP, но в тех версиях он был построен на его
собственный выделенный рабочий планировщик . Для бета-версии 1 CLR 4.0 по умолчанию
Планировщик для TPL будет пулом потоков CLR , что позволяет использовать стиль TPL
рабочие нагрузки, чтобы «играть хорошо» с существующим, основанным на QUWI кодом, и позволяет нам
использовать большую часть базовой технологии в пуле потоков - в
В частности, алгоритм внедрения потока, который мы обсудим в
будущий пост.
От:
http://blogs.msdn.com/b/ericeil/archive/2009/04/23/clr-4-0-threadpool-improvements-part-1.aspx