7
votes

C: multithreading

est multithreading soutenu en C? Si oui, alors comment puis-je essayer? Existe-t-il une bibliothèque open source qui me permet de le faire et est la bibliothèque prise en charge sur Mac OS X?

Je n'ai trouvé aucun article indiquant qu'il est soutenu.


5 Réponses :


14
votes

c n'est pas intrinsèquement un langage multithreadé; Cependant, il existe de nombreuses bibliothèques qui ajoutent une fonctionnalité de filetage.


2 commentaires

Je voulais dire que la langue peut être utilisée pour le filetage. Je vais clarifier.


BTW Il y a une version Win32 de Pthreads ici



1
votes

Pthreads. OSX a un support POSIX.


0 commentaires

2
votes

c n'a pas de concept quoi que ce soit des fils. Il n'y a pas de support de fil dans la norme C. Il existe des extensions disponibles qui peuvent implémenter multi-threading - dont l'une est Pthreads.

Sachez que le langage C n'a aucun soutien naturel de threads que vous devez prendre soin de tout et que vous ne serez pas protégé contre aucun des pièges de la programmation multi-filetée.


3 commentaires

Oh et soyez prudent - un groupe de fonctions C est connu de ne pas être le fil de sécurité (c.-à-d. Localtime et plus) OS fournit souvent des versions de fil de fil comme localTime_R


Que signifie la pièce _r signifie? Comme, c'est pour Typedef'd.


Il représente Reentrant, Duh.



1
votes

Je devinerais que la majorité de la programmation multithreadée sur Mac OS X est effectuée dans l'objectif-C ou C ++, pas la simple C. (Je me rends compte que ce n'est pas une réponse exactement à la question que vous avez posée, mais vous pourriez Voulez-vous savoir sur les alternatives.) Dans l'objectif-C, vous utiliseriez NSTHEAD ou, dans la neige léopard et plus tard, grande expédition centrale (GCD). En C ++, vous pouvez utiliser la bibliothèque de threads de Boost.org, qui présente l'avantage d'être multiplate-forme.


0 commentaires

2
votes

Le nouveau dialecte - C1X, offrira une multi-filetage de la boîte, comme indiqué à partir de Wikipedia:

Support multithreading (spécificateur de classe de stockage _Tthread_Local, en-tête comprenant des fonctions de création / gestion de threads, de mutex, de la variable de condition et de la fonctionnalité de stockage spécifique à thread, ainsi que le qualificatif de type _atomic et pour l'accès à l'objet ininterruptible).

actuellement de courae mentionné ci-dessus, la multi-threading n'est pas prise en charge dans le dernier dialecte de C-C99


0 commentaires