De acuerdo con la página de manual de pthreads, la ID del subproceso es única dentro del proceso de creación, por lo que sí, otro subproceso o proceso podría tener la misma ID. Sin embargo, si es único dentro de un proceso y un ID de proceso es único en el sistema, quizás pueda usar una combinación de los dos como identificador único.
Cada uno de los subprocesos de un proceso tiene un identificador de subproceso único (almacenado en el tipo pthread_t). Este identificador se devuelve al llamador de pthread_create(3), y un hilo puede obtener su propio identificador de hilo utilizando pthread_self(3). Solo se garantiza que los ID de subprocesos son únicos dentro de un proceso.
El TID (tal como lo devuelve el sys_gettid()
llamada al sistema) es único en todos los subprocesos del sistema, y para un proceso de un solo subproceso, el PID y el TID son iguales. Esto significa que un TID nunca chocará con un PID de otro proceso.
Si bien la identificación de pthread puede no ser única, en una implementación donde los subprocesos se asignan a tareas, la identificación de la tarea (como se ve en /proc/PID/task) será de hecho única en todo el sistema y tendrá una forma similar a un PID real.