Pregunta

Con el auge de las CPU multinúcleo en las computadoras de escritorio, las habilidades de subprocesos múltiples se convertirán en un activo valioso para los programadores.¿Puede recomendar algunos buenos recursos (libros, tutoriales, sitios web, etc.) para un programador que busca aprender sobre programación con subprocesos?

¿Fue útil?

Solución

Eche un vistazo a " de Herb Sutter "Se acabó el almuerzo gratis" y luego su serie de artículos sobre Simultaneidad efectiva.

Otros consejos

Joseph Albahari escribió una buena descripción general de Threading en C# aquí:

http://www.albahari.com/threading/

Sinceramente, nunca lo he leído, pero Programación concurrente en Java Es un libro que he escuchado recomendado por varias personas.

Escribo sobre subprocesos múltiples y concurrencia en C++ en mi blog.También estoy escribiendo un libro sobre concurrencia en C++: Simultaneidad de C++ en acción.

He leído (la mayoría de) Concurrencia de Java en la práctica de Brian Goetz, que es muy bueno.

Obviamente, hay un tema basado en Java en todo el libro (utilizando implementaciones específicas de subprocesos, bloqueos, etc. de Java), pero prácticamente todos los principios se pueden aplicar a otros lenguajes.

La página de inicio del autor contiene un lista de artículos ha escrito, algunos de los cuales incluyen temas relacionados con subprocesos.Quizás empiece por ahí y, si le gusta su estilo, compre el libro.

Para obtener una excelente guía y referencia para la programación concurrente en C# (o .NET en general), recomendaría MSDN Lo que todo desarrollador debe saber sobre las aplicaciones multiproceso artículo de Vance Morrison en MSDN.Contiene una gran cantidad de información sobre mejores prácticas y advertencias sobre el desarrollo multiproceso.

Mantengo un blog de enlaces para artículos, blogs y proyectos simultáneos en:

http://concurrency.tumblr.com

Normalmente publico uno o dos enlaces por día sobre una variedad de temas (hilos, actores, bloqueo, programación paralela) en una variedad de entornos (Erlang, Java, Scala, .NET, C++, Ruby, Python, etc.).

Es específico de Delphi, ¡pero no hay razón por la cual el concepto no se aplique a ningún otro idioma!

Tutorial de subprocesos múltiples

http://www.cilk.com/multicore-e-book/

Esa es una buena descripción general de la situación; si está buscando tutoriales y libros, sería mejor especificar un idioma como punto de partida para poder jugar con algo de código.

El lenguaje de programación Erlang proporciona un estilo de programación concurrente fácil de usar.Es posible que nunca uses Erlang, pero los conceptos son transportables a otros idiomas.Quizás quieras leer el libro. Programación Erlang:Software para un mundo concurrente .

Los fanáticos de la programación funcional afirman que no es necesario aprender nada nuevo.Simplemente use un lenguaje funcional puro y el compilador o intérprete paralelizará todo automáticamente.Quizás quieras aprender Haskell, OCaml u otro lenguaje funcional.

No sé qué estás buscando exactamente, pero si estás desarrollando WindowsForms, vale la pena leer cada minuto la siguiente publicación del blog:Invocaciones de subprocesos de interfaz de usuario de WinForms:Una revisión en profundidad de Invoke/BeginInvoke/InvokeRequred

Creo que Boost.Threads es una excelente biblioteca de concurrencia de C++ para aprender, especialmente si simplemente desea comenzar a escribir aplicaciones multiproceso.El código es muy conciso y fácil de entender, además el próximo estándar C++ probablemente incluirá una biblioteca de subprocesos basada en Boost.Threads (tutorial: http://www.ddj.com/cpp/184401518)

Si desea intentar realizar una versión altamente paralela de una tarea simple, o ver soluciones reales, lo peor que podría hacer es mirar el amplio buscador proyecto.Básicamente se trata de cómo hacer coincidencias de expresiones regulares paralelas de archivos de registro de manera eficiente, pero tratando de agregar la menor cantidad de código posible.

Los participantes han presentado soluciones en muchos idiomas diferentes y el resultados de desempeño están publicados.El proyecto original ya ha terminado y ahora hay amplio buscador 2 asumiendo el trabajo.

CodificaciónHorror tiene un buen introducción al buscador ancho.

Para un tratamiento rico y exhaustivo del tema, con un buen equilibrio entre informática y práctica, recomiendo El arte de la programación multiprocesador.Muchos ejemplos están en código orientado a objetos, es decir.Java, con otros lenguajes dispersos por todas partes.Simplemente depende del tema que se esté tratando.Lo que realmente me encanta de este libro es que analiza cómo se deben implementar algoritmos comunes en un diseño concurrente.¡Por supuesto, hay mucho más!

Para conceptos generales y un tratamiento de pthreads, me gusta mucho Programación con subprocesos POSIX.Siendo la biblioteca y API que es, está en C.

Para desarrolladores de Windows y C#, consulte El blog de Joe Duffy..Joe trabaja en bibliotecas paralelas, infraestructura y modelos de programación en la División de Desarrolladores de Microsoft.Tiene un libro que llegará en noviembre.2008 titulado Programación concurrente en Windows (enlace de amazon).

Además, no te pierdas el blog del Padrino:Hierbas Sutter Molino de Sutter.Tiene enlaces a todos sus artículos en Dr.Diario de Dobb y más.Haga clic en su categoría de concurrencia.

Los sitios web de fabricantes de CPU tienen contenido interesante:

http://developer.amd.com/documentation/articles/Pages/default.aspx#parallel

http://software.intel.com/en-us/multi-core

Además, la biblioteca de subprocesos de código abierto de Intel tiene algunas buenas referencias:

http://www.threadingbuildingblocks.org/

Si trabajas con C#, el libro “Programación con subprocesos C# 2008 y 2005”, de Gastón C.Hillar - Packt Publishing - http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book , Te ayudará.Altamente recomendado para programadores de C#, porque puedes descargar el código con ejemplos divertidos que explotan tu computadora multinúcleo.El libro es una buena guía con mucho código para practicar.Cuenta historias mientras explica los conceptos más difíciles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top