De uma task_struct
perspectiva, os encadeamentos de um processo têm o mesmo líder do grupo de encadeamentos ( group_leader
intask_struct
), enquanto os processos filhos têm um líder de grupo de encadeamentos diferentes (cada processo filho individual).
Essas informações são expostas ao espaço do usuário por meio do /proc
sistema de arquivos. Você pode rastrear pais e filhos olhando para o ppid
campo em /proc/${pid}/stat
ou .../status
(isso fornece aos pais o pid); você pode rastrear threads observando o tgid
campo .../status
(isso fornece o ID do grupo de threads, que também é o pid do líder do grupo). Os threads de um processo são visíveis no /proc/${pid}/task
diretório: cada thread recebe seu próprio subdiretório. (Todo processo tem pelo menos um encadeamento.)
Na prática, os programas que desejam acompanhar seus próprios threads dependeriam das APIs fornecidas pela biblioteca de threading que estão usando, em vez de usar informações específicas do sistema operacional. Normalmente em sistemas tipo Unix, isso significa usar pthreads.