Sí, .NET 4 añadió el Task Parallel Library la que, en un nivel alto, añade soporte para:
- correr paralelas con bucles y
Parallel.For
Parallel.ForEach
- crear o ejecutar tareas utilizando
Parallel.Invoke
o la clase Task
- PLINQ (LINQ paralelo a Objetos)
Respondiendo a la actualización de la pregunta original ...
El TPL es el preferido manera de escribir tareas paralelas usando .NET 4. Aún puede crear elementos de subprocesos usted mismo y hacer todas las mismas técnicas de subprocesamiento "manual" que antes. Lo que hay que tener en cuenta es que todo el grupo de subprocesos (y casi todo lo relacionado con el subprocesamiento) se ha reescrito para aprovechar el TPL. Esto significa que incluso si usted mismo crea un ítem de subprocesos, aún así termina usando el TPL, incluso si no lo sabe. Otra cosa a tener en cuenta es que el TPL está mucho más optimizado y se escalará de forma más adecuada en función de la cantidad de procesadores disponibles.
En cuanto a saber en qué situación de cada uno de ellos sería el más adecuado para, no hay una respuesta "bala de plata". Si anteriormente estaba haciendo cola con su propio elemento de subproceso de subprocesos (o si está haciendo algo de subprocesos múltiples), puede modificar esa parte de su código para usar el TPL sin ninguna consecuencia.
Por cosas como bucles paralelos o consultas en paralelo, tendrá que analizar el código y la ejecución de dicho código para determinar si es apropiado para ser parallelized.
¿Hay algún código de muestra único productor/consumidor individual? – Xaqron