30 votes

Puis-je obtenir pthread.h de C à compiler dans Windows?

Si j'essaye de compiler un programme avec

 #include <pthread.h>
 

en elle, j'obtiens l'erreur: pthread.h: Aucun fichier ou répertoire

Est-il possible de compiler cela dans un environnement Windows?

J'utilise Vista avec la dernière version de mingw

Je ne souhaite pas utiliser les services Microsoft Windows pour UNIX version 3.5, car je devrai les déplacer vers un environnement Unix.

23voto

Ninefingers Points 18767

Ce n'est pas tellement C est pthread.h comme Linux pthread.h - c'est un en-tête pour Unix/Linux API pour les threads. Donc je dirais que non.

L'API windows est exposée via #include <windows.h> et est documentée à l' http://msdn.microsoft.com et fonctionne différemment de Linux threading.

Edit: Bien qu'un rapide google révèle: http://sourceware.org/pthreads-win32/ et j'imagine cygwin serait de compiler une application #, y compris des pthreads.h.

12voto

Randolpho Points 36512

Comme @Ninefingers l'a mentionné, les pthreads sont uniquement Unix. Posix seulement, vraiment.

Cela dit, Microsoft possède une bibliothèque qui duplique les pthreads:

Services Microsoft Windows pour UNIX version 3.5

Téléchargement de la bibliothèque

4voto

bobobobo Points 17477

pthread.h n'est pas sur Windows. Mais Windows a étendu le filetage de la fonctionnalité, en commençant par CreateThread.

Mon conseil est de ne pas se faire attraper en regardant WinAPI à travers la lentille d'un autre système d'API. Ces systèmes sont différents. C'est comme en insistant sur l'équitation Win32 vélo avec votre confortable Linux siège de vélo. Ainsi, le siège ne peut pas s'droit et, dans certains cas, il va tout simplement tomber.

Fils assez bien travailler même sur des systèmes différents, vous avez ThreadPools et les mutex. Ayant travaillé avec les deux pthreads et les threads Windows, je peux dire que le Windows threading offre un peu plus de fonctionnalités qu' pthread n'.

L'apprentissage d'une nouvelle API est assez facile, il suffit de penser en termes de concepts (mutex, etc), puis chercher comment créer un de ceux sur MSDN.

2voto

Chris Becke Points 19910

Il y a, si je me souviens bien, deux distributions de la chaîne d'outils gnu pour Windows: mingw et cygwin.

Je m'attendrais à ce que cygwin fonctionne - beaucoup d'efforts ont été faits pour en faire un environnement posix "standard".

La chaîne d'outils mingw utilise msvcrt.dll pour son exécution et exposera donc probablement l'api "thread" de msvcrt : _beginthread qui est défini dans <process.h>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X