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? p>
Je n'ai trouvé aucun article indiquant qu'il est soutenu. P>
5 Réponses :
c n'est pas intrinsèquement un langage multithreadé; Cependant, il existe de nombreuses bibliothèques qui ajoutent une fonctionnalité de filetage. P>
win32 a une bibliothèque de threading pour C décrite à https://docs.microsoft.com/en-us/cpp/parallel/multitheading-with-c-and-win32 . P>
li>
Pthreads code> est une bibliothèque compatible avec n'importe quel système POSIX, il est donc pris en charge sur OSX. J'ai trouvé https://computing.llnl.gov/tatudials/ppthreads/ pour être un Bon endroit pour commencer. P>
li>
GLIB code> ajoute le filetage pris en charge et présente l'avantage d'être complètement multiplate-forme, tant que la GLIB est installée sur la machine cible. Il y a quelques informations ici: http://developer.gnome.org/glib/ 2.28 / glib-threads.html p>
li>
ul>
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
Pthreads. OSX a un support POSIX. P>
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. P>
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. P>
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.
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. P>
Le nouveau dialecte - C1X, offrira une multi-filetage de la boîte, comme indiqué à partir de Wikipedia: P>
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). P> blockQuote>
actuellement de courae mentionné ci-dessus, la multi-threading n'est pas prise en charge dans le dernier dialecte de C-C99 P>
Essayez Posix Pthreads .. pubs.opengroup.org/onlinePubs/007908799/XSH /ppthread.h.html