トニーが提案したように、 pthread_self()
を使用できます
しかし、しない thread_t
を比較 ==
を使用する または !=
. pthread_equal
を使用 .
pthread_self
から マニュアルページ:
したがって、pthread_t 型の変数は、C の等値演算子 (==) を使用して移植可能な形で比較することはできません。代わりに pthread_equal(3) を使用してください。
あなたの仮定はそもそも間違っています。 pthread_t オブジェクトは不透明です。 C では pthread_t 型を直接比較することはできません。代わりに pthread_equal を使用する必要があります。
もう 1 つの考慮事項は、pthread_create が失敗した場合、pthread_t の内容が未定義になることです。もう無効な値に設定されていない可能性があります。
私の好みは、pthread_create 呼び出しの戻り値を (スレッド ID と共に) 保持し、それを使用して各スレッドが正しく開始されたかどうかを判断することです。