¿Puedo obtener pthread.h de Unix para comstackr en Windows?

Si trato de comstackr un progtwig con

#include  

en él, me sale el error:

 pthread.h: No such file or directory 

¿Es posible comstackr esto en un entorno Windows?

Estoy usando Vista con la última MinGW.

No quiero usar los servicios de Microsoft Windows para UNIX versión 3.5 ya que tendré que mover esto a un entorno Unix.

pthread.h es un encabezado para la API de Unix / Linux (POSIX) para hilos. Una capa POSIX como Cygwin probablemente comstackría una aplicación con #include .

La API nativa de threads de Windows está expuesta a través de #include y funciona de forma ligeramente diferente a la de Linux.

Aún así, hay una biblioteca de “pegamento” de reemplazo mantenida en http://sourceware.org/pthreads-win32/ ; Tenga en cuenta que tiene algunas pequeñas incompatibilidades con MinGW / VS (por ejemplo, vea aquí ).

Como @Ninefingers mencionó, pthreads son solo de Unix. Posix solo, realmente.

Dicho esto, Microsoft tiene una biblioteca que duplica pthreads:

Servicios de Microsoft Windows para la versión 3.5 de UNIX

Descargar biblioteca

pthread.h no está en Windows. Pero Windows tiene una amplia funcionalidad de subprocesamiento, comenzando con CreateThread .

Mi consejo es que no te atrapen mirando WinAPI a través de la lente de la API de otro sistema. Estos sistemas son diferentes . Es como insistir en montar la bicicleta Win32 con su cómodo asiento para bicicleta Linux. Bueno, es posible que el asiento no encaje bien y, en algunos casos, simplemente se caiga.

Los hilos prácticamente funcionan igual en diferentes sistemas, tienes ThreadPools y mutexes . Habiendo trabajado con subprocesos pthreads y Windows, puedo decir que el subprocesamiento de Windows ofrece bastante más funcionalidad que pthread .

Aprender otra API es bastante fácil, solo piense en términos de los conceptos (mutex, etc.), luego busque cómo crear uno de esos en MSDN.

Como recuerdo, hay dos distribuciones de la cadena de herramientas gnu para windows: mingw y cygwin.

Esperaría que Cygwin funcione, se han hecho muchos esfuerzos para que sea un entorno posix “stadard”.

El mingw toolchain usa msvcrt.dll para su tiempo de ejecución y, por lo tanto, probablemente exponga el “hilo” de msvcrt api: _beginthread que se define en

Solo elija el paquete TDM-GCC 64x. (Consta tanto de las versiones de 32 y 64 bits de la cadena de herramientas de MinGW como de un ordenado instalador). Más importante aún, contiene algo llamado biblioteca ” winpthread “.

Se compone de las bibliotecas estáticas libwinpthread.a , libwinpthread.dll.a , libwinpthread.a , tanto para 32 bits como para 64 bits, y las .dlls necesarias libwinpthread-1.dll y libwinpthread_64-1.dll (esto, a partir de 01-06-2016).

Tendrá que libwinpthread.a enlace a la biblioteca libwinpthread.a durante la comstackción. Aparte de eso, su código puede ser el mismo que para el código Pthread nativo en Linux. Hasta ahora lo he utilizado con éxito para comstackr algunos progtwigs Pthread básicos en 64 bits en Windows.

Alternativamente, puede usar la siguiente biblioteca que envuelve la API de Windows threading en la API pthreads : pthreads-win32 .

Los dos anteriores parecen ser las formas más conocidas para esto.

Espero que esto ayude.