pthreads のマニュアル ページによると、スレッド ID は作成プロセス内で一意であるため、別のスレッドまたはプロセスが同じ ID を持つ可能性があります。ただし、プロセス内で一意であり、プロセス ID がシステム内で一意である場合は、2 つの組み合わせを一意の識別子として使用できます。
<ブロック引用>プロセス内の各スレッドには、一意のスレッド識別子 (タイプ pthread_t に格納) があります。この識別子は pthread_create(3) の呼び出し元に返され、スレッドは pthread_self(3) を使用して独自のスレッド識別子を取得できます。 スレッド ID は、プロセス内で一意であることが保証されているだけです。
TID (sys_gettid()
によって返される) システム コール) は、システム上のすべてのスレッドで一意であり、シングルスレッド プロセスの場合、PID と TID は等しくなります。これは、TID が別のプロセスからの PID と競合しないことを意味します。
pthread ID は一意ではない可能性がありますが、スレッドがタスクにマップされる実装では、タスク ID (/proc/PID/task に表示される) は実際にはシステム全体で一意であり、実際の PID に似た形式になります。