Como sugirió Tony, puedes usar pthread_self()
en esta situación.
Pero no comparar thread_t
usando ==
o !=
. Usa pthread_equal
.
Desde el pthread_self
página man:
Por lo tanto, las variables de tipo pthread_t no se pueden comparar de forma portátil mediante el operador de igualdad de C (==); use pthread_equal(3) en su lugar.
Su suposición es incorrecta para empezar. Los objetos pthread_t son opacos. No puede comparar los tipos de pthread_t directamente en C. En su lugar, debe usar pthread_equal.
Otra consideración es que si pthread_create falla, el contenido de su pthread_t no estará definido. Es posible que ya no se establezca en su valor no válido.
Mi preferencia es conservar los valores de retorno de las llamadas pthread_create (junto con los ID de subprocesos) y usarlos para determinar si cada subproceso se inició correctamente.