Secondo la pagina man di pthreads, l'ID del thread è univoco all'interno del processo di creazione, quindi sì, un altro thread o processo potrebbe avere lo stesso ID. Tuttavia, se è univoco all'interno di un processo e un ID processo è unico nel sistema, forse puoi utilizzare una combinazione dei due come identificatore univoco.
Ognuno dei thread in un processo ha un identificatore di thread univoco (memorizzato nel tipo pthread_t). Questo identificatore viene restituito al chiamante di pthread_create(3) e un thread può ottenere il proprio identificatore di thread utilizzando pthread_self(3). Si garantisce che gli ID thread siano univoci solo all'interno di un processo.
Il TID (come restituito dal sys_gettid()
chiamata di sistema) è univoco in tutti i thread del sistema e per un processo a thread singolo PID e TID sono uguali. Ciò significa che un TID non entrerà mai in conflitto con un PID di un altro processo.
Sebbene l'ID pthread potrebbe non essere univoco, in un'implementazione in cui i thread vengono mappati alle attività, l'id attività (come visto in /proc/PID/task) sarà in effetti univoco a livello di sistema e avrà una forma simile a un PID effettivo.