本篇文章將介紹本人對以下問題的理解。
1、進程、輕量級進程、線程、線程組之間的關系
2、及它們的標識相關說明
一、進程、輕量級進程、線程、線程組之間的關系
借助上圖說明:
進程P0有四條執行流,即線程,
主線程t0是它的第一個線程,且與進程P0相關聯,
之后衍生出t1、t2、t3三個線程,這三個線程與輕量級進程P1、P2、P3一一關聯,
所有的進程、輕量級進程、線程組成了線程組。
輕量級進程也是進程,只不過它與某進程的某特定線程相關聯。
二、它們的標識相關說明
pid是進程標識符,tgid是線程組標識符
每個進程都有自己的pid,如圖中:進程pid(P0)= a,輕量級進程pid(P1)= b / pid(P1)= c / pid(P1)= d。
同屬於一個線程組的所有進程、輕量級進程有同樣的線程組標識符,且其為第一個線程所關聯的進程標識符,
例如:圖中第一個線程為t0,它所關聯的進程為P0,pid(P0)= a,所以tgid(P1)= a / tgid(P1)= a / tgid(P1)= a / tgid(P1)= a。
當我們使用函數getpid(current_p)時,返回值不是current_p的pid,而是它的tgid。(current_p為當前進程)。