GNU/Linux >> Znalost Linux >  >> Linux

Může být ID vlákna vícevláknového procesu stejné jako ID procesu jiného běžícího procesu?

Podle manuálové stránky pthreads je ID vlákna v procesu vytváření jedinečné, takže ano, jiné vlákno nebo proces může mít stejné ID. Pokud je však v procesu jedinečné a ID procesu je v systému jedinečné, můžete jako jedinečný identifikátor použít kombinaci těchto dvou.

Každé z vláken v procesu má jedinečný identifikátor vlákna (uložený v typu pthread_t). Tento identifikátor je vrácen volajícímu funkce pthread_create(3) a vlákno může získat svůj vlastní identifikátor vlákna pomocí pthread_self(3). ID vláken jsou zaručena pouze v rámci procesu.


TID (vrácené sys_gettid() systémové volání) je jedinečné napříč všemi vlákny v systému a pro jednovláknový proces jsou PID a TID stejné. To znamená, že TID se nikdy nebude střetávat s PID z jiného procesu.


I když ID pthread nemusí být jedinečné, v implementaci, kde se vlákna mapují na úkoly, bude ID úlohy (jak je vidět v /proc/PID/task) ve skutečnosti jedinečné pro celý systém a bude mít formu podobnou skutečnému PID.


Linux
  1. Jak změnit přesměrování výstupu běžícího procesu?

  2. Linux – Selhání nastavení afinity k běžícímu procesu se sadou úloh?

  3. Jak můžete zjistit číslo procesoru, na kterém běží vlákno?

  1. Mohu použít GDB k ladění běžícího procesu?

  2. Jak zjistím, ve kterém jádru CPU běží vlákno?

  3. Jaké je PID v hostiteli procesu běžícího uvnitř kontejneru Docker?

  1. Jak mohu nastavit afinitu procesoru k procesu v systému Linux?

  2. Určení konkrétního procesoru, na kterém běží proces

  3. Jak mohu získat čas nástěnných hodin běžícího procesu?