10
votes

En utilisant pthread.h sur une construction de Windows

J'ai une base de code qui utilise une utilisation intensive de Pthread.h. Sur un projet Windows Visual Studio, cela ne fonctionne évidemment pas depuis que Pthreads est un utilitaire UNIX.

Je sais qu'il existe Pthread-Win32 ou quelque chose du genre, mais y a-t-il un moyen d'utiliser une base de code qui, sans remplacer tout le code Pthread?

Edit: Je préférerais ne pas avoir à passer et à remplacer tous les appels Pthread. Ceci est ma question


1 commentaires

Je ne comprends pas. Vous dites que vous savez qu'une bibliothèque Pthread existe pour Win32, alors pourquoi ne l'utilisez-vous pas?


3 Réponses :


4
votes

Je recommanderais Boost en tant que bibliothèque contenant une abstraction de fil de plate-forme indépendante. Je ne pense pas que vous trouverez une tentative d'appeler les fonctions Pthread eux-mêmes pour être satisfaisantes. Il n'est pas non plus très difficile de mapper Pthread pour Win32 pour vous-même.


4 commentaires

Pas très utile pour une personne qui a une base de code existante utilisant Pthreads où ils préfèrent ne pas avoir à réécrire le code de filetage. :)


Je l'ai fait plusieurs fois. La recherche / remplacement globale a été inventée pour une raison.


Cette raison ne changeait pas entre les API avec des différences sémantiques potentielles.


Cette réponse est hors sujet. Si vous rencontrez un problème avec une vis, vous ne devriez pas changer la voiture entière vers une nouvelle vis que vous pourriez trouver.



7
votes

Essayez http://sourceware.org/pthreads-win32/ . Bien que je n'ai jamais utilisé cette bibliothèque particulière, j'ai eu de la chance en utilisant des ports Windows / des couches d'abstraction d'API POSIX.


0 commentaires

3
votes

Si le code est très lourd * basé sur Nix, vous aurez probablement la meilleure chance de la compiler avec Cygwin + GCC. Si Pthreads est la seule * nix dépendance et que vous souhaitez éviter la dépendance de Cygwin, vous devriez utiliser pthreads- Win32 .


0 commentaires