Multihilo básico en C / C ++: sugerencias, consejos, tutoriales, ¿alguna orientación?

Me gustaría aprender a crear una aplicación de subprocesos múltiples, pero ni siquiera sé por dónde empezar.

¿Cómo la mayoría de las personas implementan subprocesos múltiples? ¿Utilizan la biblioteca boost? ¿Hay alguna otra manera de hacerlo? (usando el estándar C / C ++)

Entiendo el concepto, pero no tengo ni idea de por dónde empezar a aprender cómo hacerlo. ¿Alguien puede recomendar algo?

http://msdn.microsoft.com/en-us/library/7t9ha0zh%28v=VS.80%29.aspx <— ¿Son estos C ++ estándar, o alguna implementación exclusiva de Microsoft?

¿Estoy seguro de que las bibliotecas de multiproceso están contenidas en la API de Windows? Encontré un ejemplo en MSDN ( http://msdn.microsoft.com/en-us/library/esszf9hw%28v=VS.80%29.aspx ) y las funciones que utiliza (ReleaseMutex, etc.) parecen estar en Windows .h. ¿Es esto lo que la mayoría de la gente usa cuando hace la progtwigción de Windows?

La biblioteca Boost es una forma multiplataforma de usar hilos.

La mayoría de la gente usa winapi o pthreads . pthreads se usó originalmente en los sistemas POSIX pero hay un puerto para mingw que permite su uso en Windows también.

Recomendaría usar boost si absolutamente necesita una solución multiplataforma, o si ya tiene vinculadas las bibliotecas boost. Si está desarrollando para Windows o POSIX, use winapi o pthreads de manera correspondiente.

Si está buscando un aumento de rendimiento simple para su aplicación a través de subprocesos múltiples, OpenMP es una biblioteca simple que le permitirá a su progtwig escalar a través de múltiples núcleos, requiriendo solo la ubicación #pragma en su código para paralelizar bloques de código o bucles, con Opciones adicionales para debilitar el rendimiento específico.

Esto no permite fácilmente un paralelismo basto como una división de GUI / procesamiento / IO en la aplicación, pero sí permite aumentos de rendimiento de subprocesos múltiples fácilmente visibles en máquinas de múltiples núcleos en el procesamiento de números pesados.

Si nunca antes ha tratado con multithreading, le sugiero que trabaje usted mismo en un tutorial como este en el proyecto de código para comenzar.