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.