Jak navrhl Tony, můžete použít pthread_self()
v této situaci.
Ale ne porovnejte thread_t
s pomocí ==
nebo !=
. Použijte pthread_equal
.
Z pthread_self
manuálová stránka:
Proto proměnné typu pthread_t nelze přenositelně porovnávat pomocí operátoru rovnosti C (==); místo toho použijte pthread_equal(3).
Tvůj předpoklad je pro začátek nesprávný. Objekty pthread_t jsou neprůhledné. Typy pthread_t nelze porovnávat přímo v C. Místo toho byste měli použít pthread_equal.
Dalším aspektem je, že pokud pthread_create selže, obsah vašeho pthread_t bude nedefinovaný. Nemusí již být nastavena na vaši neplatnou hodnotu.
Moje preference je zachovat návratové hodnoty volání pthread_create (spolu s ID vláken) a použít je k určení, zda bylo každé vlákno spuštěno správně.