Sous Linux (noyau 2.6.5), notre système de construction appelle gcc avec -D_REENTRANT
.
Est-ce toujours nécessaire lors de l'utilisation de pthreads
?
En quoi est-il lié à l'option gcc -pthread
? Je comprends que je devrais utiliser -pthread
avec pthreads, ai-je encore besoin de -D_REENTRANT
?
En passant, y a-t-il une différence que vous connaissez entre l'utilisation de REENTRANT entre gcc 3.3.3 et gcc 4.x.x ?
Lorsque j'utilise l'option -pthread
de gcc, je peux voir que _REENTRANT
est défini. Est-ce que l'omission de -D_REENTRANT
de la ligne de commande fera une différence, par exemple certains objets pourraient être compilés sans support multithread puis liés dans un binaire qui utilise pthreads et causerait des problèmes ?
Je suppose qu'il devrait être ok juste d'utiliser : g++ -pthread
> echo | g++ -E -dM -c - > monofil
> echo | g++ -pthread -E -dM -c - > multithreaded
> diff monofil multithreaded
39a40
> #define _REENTRANT 1
Nous compilons plusieurs bibliothèques statiques et des applications qui se lient aux bibliothèques statiques, les deux bibliothèques et applications utilisent pthreads.
Je crois que c'était nécessaire à un certain stade passé mais je veux savoir si c'est toujours nécessaire. Les recherches sur Google n'ont pas renvoyé des informations récentes mentionnant -D_REENTRANT
avec pthreads
. Pourriez-vous me diriger vers des liens ou des références discutant de l'utilisation dans des versions récentes de kernel/gcc/pthread ?
Clarification : Actuellement nous utilisons -D_REENTRANT et -lpthread, je suppose que je peux les remplacer juste par g++ -pthread, en regardant le man de gcc, cela définit les drapeaux pour à la fois le préprocesseur et le linker. Des pensées ?