Comme suggéré par Tony, vous pouvez utiliser pthread_self()
dans cette situation.
Mais ne le faites pas comparer thread_t
s en utilisant ==
ou !=
. Utilisez pthread_equal
.
Depuis le pthread_self
page de manuel :
Par conséquent, les variables de type pthread_t ne peuvent pas être comparées de manière portable à l'aide de l'opérateur d'égalité C (==) ; utilisez pthread_equal(3) à la place.
Votre hypothèse est incorrecte pour commencer. Les objets pthread_t sont opaques. Vous ne pouvez pas comparer les types pthread_t directement en C. Vous devez utiliser pthread_equal à la place.
Une autre considération est que si pthread_create échoue, le contenu de votre pthread_t sera indéfini. Il ne peut plus être défini sur votre valeur invalide.
Ma préférence est de conserver les valeurs de retour des appels pthread_create (avec les ID de thread) et de les utiliser pour déterminer si chaque thread a été démarré correctement.