線程和進程的區別
- 不一樣調度單位:進程是資源的分配和調度的一個獨立單位,而線程是cpu調度的基本單位。
- 包含關係:同一個進程能夠包含多個線程,而且線程共享整個進程的資源(寄存器、堆棧、上下文),一個進程至少包含一個線程。
- 進程的建立調用fork或者vfork,而線程的建立調用pthread——create,進程結束後它擁有的全部線程都被銷燬,而線程的結束不會影響同個進程中的其餘線程的結束。
- 開銷不一樣:線程是輕量級的進程,它的建立和銷燬所須要的時間比進程小不少,全部操做系統的執行功能都是建立線程去完成的。
- 線程是同步、互斥的:線程中執行時通常都要進行同步和互斥,由於他們共享同一進程的全部資源。
- 線程有本身的私有屬性TCB,線程id,寄存器,硬件上下文,而進程也有本身的私有屬性進程控制塊PCB,這些私有屬性是不被共享的,用來表示一個進程或一個線程的標誌。
歡迎關注本站公眾號,獲取更多信息