GNU/Linux >> Linux Esercitazione >  >> Linux

L'ID thread di un processo multithread può essere uguale all'ID processo di un altro processo in esecuzione?

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.


Linux
  1. Linux:l'impostazione dell'affinità del processo di esecuzione con il set di attività non riesce?

  2. Posso utilizzare GDB per eseguire il debug di un processo in esecuzione?

  3. Come posso vedere in quale core della CPU è in esecuzione un thread?

  4. Qual è il PID nell'host, di un processo in esecuzione all'interno di un contenitore Docker?

  5. È garantito che un PID di processo rimanga lo stesso finché il processo non muore?

Verificare il processo se lo stesso è in esecuzione?

Dove vanno a finire i codici di escape Ansi quando passo a un altro processo? Posso tenerli?

Come puoi trovare il numero del processore su cui è in esecuzione un thread?

Come posso conoscere il percorso assoluto di un processo in esecuzione?

Determinazione del particolare processore su cui è in esecuzione un processo

Il processo init può essere uno script di shell in Linux?