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.