Да, в .NET 4 добавлена параллельная библиотека задач , которая на высоком уровне добавляет поддержку:
- выполнение параллельных циклов с
Parallel.For
и Parallel.ForEach
- создание или запуск задач с использованием
Parallel.Invoke
или Task
class
- PLINQ (параллельно LINQ to Objects)
Ответ на обновление на исходный вопрос ...
TPL - это предпочтительный способ написания параллельных задач с использованием .NET 4. Вы по-прежнему можете создавать элементы пула потоков самостоятельно и использовать все те же "ручные" методы потоков, которые вы могли использовать ранее. Следует помнить, что весь пул потоков (и почти все, что связано с потоками) был переписан для использования преимуществ TPL. Это означает, что даже если вы создадите элемент пула потоков самостоятельно, вы все равно будете использовать TPL, даже если вы этого не знаете. Следует также помнить, что TPL гораздо более оптимизирован и будет масштабироваться более корректно в зависимости от количества доступных процессоров.
Что касается того, для какой ситуации лучше всего подходит каждый из них, то ответа «серебряная пуля» не существует. Если вы ранее ставили в очередь свой собственный элемент пула потоков (или иным образом делали что-то многопоточное), вы можете изменить эту часть своего кода, чтобы использовать TPL без каких-либо последствий.
Для таких вещей, как параллельные циклы или параллельные запросы, вам необходимо проанализировать код и выполнение этого кода, чтобы определить, целесообразно ли распараллеливать.