參考:Linux公社 微信公衆号文章
一、程序與線程的異同
1.程序是資源配置設定的基本機關,線程是系統排程的基本機關
2.程序是資源的集合,這些資源包括記憶體位址空間,檔案描述符等,一個程序中的多個線程共享這些資源
3.CPU對任務進行排程時,可排程的基本機關是線程。如果一個程序中沒有其他線程,可以了解為這個程序中隻有一個主線程,該主線程獨享程序的所有資源。
4.程序的個體間是完全獨立的,線程間是彼此依存的并且共享資源。多程序環境中,任何一個程序的種植,不會影響到其他非子程序。而多線程環境中,父線程終止,全部子線程被迫終止。
二、各種ID
pid:程序id
tgid:線程組id,也就是線程組leader的pid,等于pid
tid/lwp:線程id,tid在系統提供的接口函數中更常用,lwp在使用者态指令中常用(ps)
pgid:程序組id,也就是程序組leader的程序id