Sur Linux un thread est identifié par un pthread_t
ou un TID. Je cherche des ponts entre ces deux types de fil ids:Y at-il un moyen de lier un thread TID de linux et un "thread ID" pthread_t
- donné un
pthread_t
puis-je obtenir c'estTID
? apparently pas sans le piratage dans les parties internes de pthread :(mais je demande toujours au cas où quelqu'un a une façon propre de le faire. - donné un
TID
(ouPID
), puis-je obtenir une poignéepthread_t
à elle?
Parce que le terme "id fil" est ambigu dans ce contexte (et dans la documentation), un peu de fond:
l'API pthread définit un type POSIX
pthread_t
, al l les fonctions qui requièrent/agissent sur un thread utilisent un argumentpthread_t
, et nous pouvons obtenir une telle manipulation par exemple. avecpthread_self()
. La documentation appelle ces "identificateurs de threads", mais ici je les appelle descripteurs pour désambiguïser, car plusieurs valeurspthread_t
différentes peuvent représenter le même thread, d'où la nécessité depthread_equal(pthread_t, pthread_t)
. D'autre part, sur linux au moins, il existe un concept deTID
s ou des identifiants de threads. On peut obtenir leTID
actuel avec un appel système:syscall(SYS_gettid)
. LeTID
a quelques propriétés intéressantes comme étant unique à un fil, et comparable àPID
s, ce qui permet d'identifier facilement le fil conducteur, etc.
Que comptez-vous faire avec 'TID'? –
@MaximEgorushkin: débogage/traçage plus facile (puisqu'il est unique), effectuant des opérations sur le thread principal à partir d'un autre thread ou utilisant des fonctions thread spécifiques à linux qui ne sont pas extraites par pthread. – Antoine