Wie von Tony vorgeschlagen, können Sie pthread_self()
verwenden in dieser Situation.
Aber nicht vergleiche thread_t
s mit ==
oder !=
. Verwenden Sie pthread_equal
.
Aus dem pthread_self
Manpage:
Daher können Variablen vom Typ pthread_t nicht portabel mit dem C-Gleichheitsoperator (==) verglichen werden; Verwenden Sie stattdessen pthread_equal(3).
Ihre Annahme ist zunächst falsch. pthread_t-Objekte sind undurchsichtig. Sie können pthread_t-Typen nicht direkt in C vergleichen. Sie sollten stattdessen pthread_equal verwenden.
Eine weitere Überlegung ist, dass der Inhalt Ihres pthread_t undefiniert ist, wenn pthread_create fehlschlägt. Es darf nicht mehr auf Ihren ungültigen Wert gesetzt werden.
Ich bevorzuge es, die Rückgabewerte der pthread_create-Aufrufe (zusammen mit den Thread-IDs) beizubehalten und diese zu verwenden, um festzustellen, ob jeder Thread korrekt gestartet wurde.