參考:Linux公社 微信公衆號文章
一、進程與線程的異同
1.進程是資源分配的基本單位,線程是系統調度的基本單位
2.進程是資源的集合,這些資源包括內存地址空間,文件描述符等,一個進程中的多個線程共享這些資源
3.CPU對任務進行調度時,可調度的基本單位是線程。如果一個進程中沒有其他線程,可以理解爲這個進程中只有一個主線程,該主線程獨享進程的所有資源。
4.進程的個體間是完全獨立的,線程間是彼此依存的並且共享資源。多進程環境中,任何一個進程的種植,不會影響到其他非子進程。而多線程環境中,父線程終止,全部子線程被迫終止。
二、各種ID
pid:進程id
tgid:線程組id,也就是線程組leader的pid,等於pid
tid/lwp:線程id,tid在系統提供的接口函數中更常用,lwp在用戶態命令中常用(ps)
pgid:進程組id,也就是進程組leader的進程id