Dans divers projets C et C++ multithreads, j'ai vu l'indicateur -pthread
Être appliqué à la compilation et à la création de liens alors que d'autres ne l'utilisaient pas du tout et passaient simplement -lpthread
À la création de liens. .
Existe-t-il un danger de ne pas compiler et relier avec le drapeau -pthread
- c’est-à-dire ce que fait réellement -pthread
? Je m'intéresse principalement aux plateformes Linux.
Essayer:
gcc -dumpspecs | grep pthread
et cherchez tout ce qui commence par %{pthread:
.
Sur mon ordinateur, les fichiers sont compilés avec -D_REENTRANT
, et lié à -lpthread
. Sur d'autres plateformes, cela pourrait différer. Utilisation -pthread
pour plus de portabilité.
En utilisant _REENTRANT
, on GNU libc, modifie le fonctionnement de certains en-têtes de libc. Comme exemple spécifique, il fait appeler errno
une fonction renvoyant un emplacement local du thread.
De man gcc
:
-pthread Ajoute la prise en charge du multithreading avec la bibliothèque pthreads. Cette option définit des indicateurs pour le préprocesseur et l'éditeur de liens.