Come suggerito da Tony, puoi usare pthread_self()
in questa situazione.
Ma non confronta thread_t
usa ==
o !=
. Usa pthread_equal
.
Dal pthread_self
pagina man:
Pertanto, le variabili di tipo pthread_t non possono essere confrontate in modo portabile utilizzando l'operatore di uguaglianza C (==); usa invece pthread_equal(3).
La tua ipotesi non è corretta per cominciare. Gli oggetti pthread_t sono opachi. Non puoi confrontare i tipi pthread_t direttamente in C. Dovresti invece usare pthread_equal.
Un'altra considerazione è che se pthread_create fallisce, il contenuto del tuo pthread_t sarà indefinito. Potrebbe non essere più impostato sul tuo valore non valido.
La mia preferenza è mantenere i valori di ritorno delle chiamate pthread_create (insieme agli ID dei thread) e usarli per determinare se ogni thread è stato avviato correttamente.