Laut der Manpage von pthreads ist die Thread-ID innerhalb des Erstellungsprozesses eindeutig, also könnte ein anderer Thread oder Prozess dieselbe ID haben. Wenn es jedoch innerhalb eines Prozesses eindeutig ist und eine Prozess-ID im System eindeutig ist, können Sie möglicherweise eine Kombination aus beiden als eindeutige Kennung verwenden.
Jeder der Threads in einem Prozess hat eine eindeutige Thread-Kennung (gespeichert im Typ pthread_t). Dieser Bezeichner wird an den Aufrufer von pthread_create(3) zurückgegeben, und ein Thread kann seinen eigenen Threadbezeichner mit pthread_self(3) erhalten. Thread-IDs sind nur innerhalb eines Prozesses garantiert eindeutig.
Die TID (wie von sys_gettid()
zurückgegeben Systemaufruf) ist für alle Threads auf dem System eindeutig, und für einen Singlethread-Prozess sind PID und TID gleich. Das bedeutet, dass eine TID niemals mit einer PID eines anderen Prozesses kollidieren wird.
Während die pthread-ID möglicherweise nicht eindeutig ist, ist die Task-ID (wie in /proc/PID/task zu sehen) in einer Implementierung, in der Threads Tasks zugeordnet werden, tatsächlich systemweit eindeutig und hat eine ähnliche Form wie eine tatsächliche PID.