c++ multithreading c++11 gcc mingw-w64

c++ - ¿MinGW-w64 admite std:: thread fuera de la caja cuando se usa el modelo de subprocesos Win32?



multithreading c++11 (1)

Para usar el MinGW-w64 con hilos nativos de Win32, puede instalar los mingw-std-threads .

Como se describe en esa página, esto se debe a que MinGW-w64 es un puerto de GCC, pero GCC no incluye ningún soporte de hilo nativo. En cambio, las instalaciones de GCC generalmente implementan subprocesos mediante gthreads o pthreads como parte de glibc. MinGW-w64 no incluye un puerto de glibc. (En su lugar, utiliza una combinación del tiempo de ejecución MSVC, más su propio código para rellenar huecos).

Además, como se describe en esa página, las versiones recientes de MinGW-w64 incluyen un puerto Win32 de pthreads ("winpthreads"), que explica por qué puede hacer que los hilos funcionen "fuera de la caja" seleccionando el modelo "pthread" del MinGW -w64 instalador.

He optado por el modelo de subprocesos Win32 al instalar la cadena de herramientas MinGW-w64, después de leer que proporciona un mejor rendimiento que la contraparte POSIX. No estoy calificado para hacer una evaluación comparativa de esta afirmación, pero aquí hay una fuente para ello .

Al principio pensé que esta opción solo afectaría el funcionamiento interno del tiempo de ejecución de GCC, sin impedir que use hilos de C ++ 11 en mi código, en base a esta respuesta y este comentario del usuario rubenvb .
Sin embargo, este no parece ser el caso. std::thread soporte std::thread parece no existir en esta instalación MinGW-w64.

Estoy invocando g ++ desde la línea de comandos sin otras opciones que -std=c++11 .

En este punto no estoy seguro si:

  • rubenvb estaba equivocado, y en realidad es necesario instalar MinGW-w64 bajo el modelo de subprocesos POSIX para compilar mi código que depende de la biblioteca de thread C ++ 11, o;
  • Lo entendí completamente mal, o;
  • std::thread es realmente compatible con mi escenario, simplemente no es intuitivo.

Reforzo la parte "fuera de la caja" en el título. Existe una biblioteca llamada mingw-std-threads , como se presenta en esta respuesta . Sin embargo, como opción de un tercero, no es relevante para esta pregunta.

Entonces, a partir de hoy (mayo de 2016), ¿MinGW-w64 admite de forma nativa el código dependiente de std::thread , cuando se instala con el modelo de subprocesamiento interno Win32?