Seperti yang disarankan oleh Tony, Anda dapat menggunakan pthread_self() dalam situasi ini.
Namun jangan bandingkan thread_t menggunakan == atau != . Gunakan pthread_equal .
Dari pthread_self halaman manual:
Oleh karena itu, variabel bertipe pthread_t tidak dapat dibandingkan dengan menggunakan operator kesetaraan C (==); gunakan pthread_equal(3) sebagai gantinya.
Asumsi Anda salah sejak awal. objek pthread_t buram. Anda tidak dapat membandingkan jenis pthread_t secara langsung di C. Sebagai gantinya, Anda harus menggunakan pthread_equal.
Pertimbangan lain adalah jika pthread_create gagal, konten pthread_t Anda tidak akan terdefinisi. Ini mungkin tidak disetel ke nilai Anda yang tidak valid lagi.
Preferensi saya adalah mempertahankan nilai pengembalian panggilan pthread_create (bersama dengan ID utas) dan menggunakannya untuk menentukan apakah setiap utas dimulai dengan benar.