GNU/Linux >> Tutoriels Linux >  >> Linux

L'ID de thread d'un processus multithread peut-il être le même que l'ID de processus d'un autre processus en cours d'exécution ?

Selon la page de manuel de pthreads, l'ID de thread est unique dans le processus de création, donc oui, un autre thread ou processus pourrait avoir le même ID. Cependant, s'il est unique au sein d'un processus et qu'un ID de processus est unique dans le système, vous pouvez peut-être utiliser une combinaison des deux comme identifiant unique.

Chacun des threads d'un processus a un identifiant de thread unique (stocké dans le type pthread_t). Cet identifiant est renvoyé à l'appelant de pthread_create(3), et un thread peut obtenir son propre identifiant de thread en utilisant pthread_self(3). Les identifiants de thread sont uniquement garantis comme étant uniques au sein d'un processus.


Le TID (tel que renvoyé par le sys_gettid() appel système) est unique sur tous les threads du système et, pour un processus monothread, le PID et le TID sont égaux. Cela signifie qu'un TID n'entrera jamais en conflit avec un PID d'un autre processus.


Bien que l'ID de pthread puisse ne pas être unique, dans une implémentation où les threads correspondent aux tâches, l'ID de tâche (comme on le voit dans /proc/PID/task) sera en fait unique à l'échelle du système et aura une forme similaire à un PID réel.


Linux
  1. Comment afficher la sortie d'un processus en cours d'exécution dans une autre session Bash ?

  2. Comment pouvez-vous trouver le numéro de processeur sur lequel un thread s'exécute ?

  3. Quel est le PID dans l'hôte d'un processus exécuté dans un conteneur Docker ?

  4. Détermination du processeur particulier sur lequel un processus s'exécute

  5. Comment puis-je obtenir l'heure de l'horloge murale d'un processus en cours d'exécution ?

Un PID de processus est-il garanti de rester le même tant que le processus ne meurt pas ?

Comment définir l'affinité processeur d'un processus sous Linux ?

Comment récupérer par programmation le GID d'un processus en cours d'exécution

La définition de l'affinité du processus en cours d'exécution avec l'ensemble de tâches échoue

Qu'advient-il d'un processus Linux multithread s'il reçoit un signal ?

Vous ne trouvez pas .so dans le même répertoire que l'exécutable ?