Pthreads dans Visual C++
Je suis en train d'expérimenter avec le multithreading dans Windows et je me demandais si je ne devrais pas
- utilisation API Win32
- utilisation Les Threads POSIX pour Windows
Apprentissage Pthreads serait utile si j'ai essayé de développer ce type d'applications sur différentes plates-formes - mais suis-je perdre quoi que ce soit par le pas de l'apprentissage de l'API Win32? Ou les deux sont assez similaires, de sorte que l'apprentissage me permet de comprendre à l'autre facilement?
Vous pouvez utiliser Boost.Fil si cela est possible. Il fonctionne de la même pour toutes les plateformes (il prend en charge toutes les principales plates-formes).
Si vous êtes à expérimenter puis les Threads POSIX pour la bibliothèque Windows peut être très utile pour les raisons que vous mentionnez. Si vous voulez distribuer un produit, alors vous devez considérer si la licence LGPL est compatible avec la façon dont vous souhaitez vous séparer de votre produit.
Si vous êtes à expérimenter puis les Threads POSIX pour la bibliothèque Windows peut être très utile pour les raisons que vous mentionnez. Si vous voulez distribuer un produit, alors vous devez considérer si la licence LGPL est compatible avec la façon dont vous souhaitez vous séparer de votre produit.
OriginalL'auteur Jacob | 2010-03-08
Vous devez vous connecter pour publier un commentaire.
Utiliser Boost Threads. Quand C++0x qui vient, nous aurons std::threads. Boost fils est le plus proche de la mise en œuvre de std threads.
sinon utiliser des pthreads. Pthreads est la deuxième la plus proche de std::threads, et ont constitué la principale base de std fils et de stimuler les threads.
d'autre de le faire windows de filetage directement. Vous pouvez encore apprendre comment les threads de travail, et la forme d'un modèle mental de choses. Elle tend simplement à l'utilisation des primitives de synchronisation qui sont un peu non standard.
OriginalL'auteur tony
Si vous allez faire beaucoup de programmation de Windows, il va payer pour apprendre la base Win32 filetage des constructions: les sections critiques, interloqué fonctions,
CreateThread
,WaitFor*Object
, etc. Ce ne sont pas difficile à comprendre, et qu'ils traduisent de manière transparente pour l'équivalent d'objets dans d'autres threading cadres.Cependant, pour les plus avancés d'enfilage des constructions telles que les sémaphores, les événements, etc., Je voudrais utiliser le
pthreads
bibliothèque, étant donné que la documentation tend à être plus claires et des exemples plus abondante.OriginalL'auteur JSBձոգչ
Si vous êtes à l'aide de C/C++, essayez d'utiliser le fil fonctions du C/C++ runtime.
Si vous utilisez Win32 (ou d'autres non-CRT fonctions pour créer des threads) le CRT pourrait ne pas être correctement initialisées dans le nouveau thread, l'origine de toutes sortes de problème (vous pouvez lire à ce sujet ici: http://www.codeguru.com/forum/archive/index.php/t-371305.html).
Cependant, la plupart des fil-fonctions (dans le CRT, Win32 ou pthread) sont tous basés autour de la fonctionnalité pour créer des threads, de synchroniser des threads et de détruire les threads. Dans la pratique, ce n'est pas toujours facile à utiliser.
Dans la dernière année, il ya une tendance à aller à la tâche en fonction de thread (bon, je l'appelle de cette façon, je ne sais pas quel est le nom officiel est). Au lieu de commencer un thread et l'exécution d'une certaine logique, basée sur les tâches threading vous créez une tâche, puis demander à la "filetage logique" pour exécuter la tâche.
Les systèmes qui prennent en charge cette nouvelle façon de travailler avec les threads sont:
Visual Studio 2010 qui a semble-t-il spécial de débogage logique pour déboguer le parallèle des tâches.
OriginalL'auteur Patrick
Prendre un coup d'oeil à std::thread
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2184.html
Et une introduction
http://www.devx.com/SpecialReports/Article/38883
OriginalL'auteur ROAR
J'ai trouvé que le fait de tenir avec les pthreads enregistre ma santé mentale sur trois chefs d'accusation:
WinAPI docs, qui ne sont pas habituellement
de toute qualité.
peut aider à
pthreads. J'ai trouvé infiniment plus de bonnes sources d'information sur les pthreads en ligne.
compliqué que "Hello World" avec
la WinAPI, je trouve qu'il prend beaucoup
plus que ce qu'on pouvait raisonnablement
s'attendre. C'est juste mon empirique
d'entrée, si.
Aussi loin que leurs capacités, je n'ai jamais trouvé pthreads manquer de quoi que ce soit, donc je ne pense pas que j'ai jamais ressenti le besoin de chercher ailleurs. Il y a aussi beaucoup à dire en faveur de l'apprentissage d'une bibliothèque que vous serez capable de l'utiliser dans n'importe quel environnement vous attaquer.
Je ne peux pas vraiment dire que je suis un unix adhérentes, mais je ne suis pas un fan de plus conçu des interfaces. Win32 fils sont un seul hic, je me suis battu dans la dernière semaine. Un autre a été CreateProcess. Ces sont des interfaces pour les tâches simples qui ont été architecturé au point qu'ils n'ont pas de travail simple par défaut. La doc de la fonction CreateProcess pointez sur le modèle de sécurité que la raison de l'excès de configuration. J'ai travaillé avec le solaris modèle de la même chose et qu'ils utilisent - surprise, surprise, le fork/exec en OPTION avec un ensemble d'outils pour gérer la politique de sécurité. FUD. La droite.
Nouveau et écrasante n'est pas la même chose que de mauvais.
OriginalL'auteur Sniggerfardimungus