Definitivamente un +1 en las Extensiones Paralelas a .NET. Microsoft ha hecho un gran trabajo aquí para mejorar ThreadPool. Solía tener una cola global que manejaba todas las tareas, incluso si se generaban a partir de un hilo de trabajo. Ahora tienen una cola global sin bloqueos y colas locales para cada subproceso de trabajo. Esa es una mejora muy agradable.
No soy tan fanático de cosas como Parallel.For, Parallel.Foreach y Parallel.Invoke (regions), ya que creo que deberían ser extensiones de lenguaje puro en lugar de bibliotecas de clases. Obviamente, entiendo por qué tenemos este paso intermedio, pero es inevitable que C# gane mejoras de idioma para la concurrencia y es igualmente inevitable que tengamos que volver y cambiar nuestro código para aprovecharlo :-)
En general, si busca construir aplicaciones concurrentes en .NET, se debe a usted mismo para investigar las extensiones paralelas.También creo que, dado que este es un esfuerzo bastante incipiente de Microsoft, debería ser muy elocuente sobre lo que funciona para usted y lo que no funciona, independientemente de lo que perciba que es su propio nivel de competencia con la concurrencia. Microsoft definitivamente está escuchando, pero no creo que haya tantas personas que usan las Extensiones Paralelas. Ayer estuve en VSLive Redmond y vi una sesión sobre este tema y continúo impresionado con el equipo que está trabajando en esto.
Divulgación: solía ser el director de marketing de Visual Studio y ahora estoy en una startup llamada Corensic donde estamos creando herramientas para detectar errores en aplicaciones concurrentes.
Cualquier ejemplo de tal aplicación de cliente ampliamente utilizada. de Codeplex o Código? – GilliVilla
@GilliVilla: No es que yo sepa de improviso. Pero busque las aplicaciones del cliente y es probable que usen hilos en algún lugar ... –
Para realizar un seguimiento: las aplicaciones del cliente también pueden usar las extensiones reactivas (que está a punto de completarse). Además, cuando Jon habla sobre aplicaciones web que tratan "cada solicitud como (* sic: has *) con un hilo separado", eso también incluye páginas asíncronas. –