進程和線程的主要區別
記筆記 面試會問面試
- 每一個進程都有獨立的代碼和數據空間(進程上下文),進程間的切換會有較大的開銷。
- 線程能夠當作是輕量級的進程,屬於同一進程的線程共享代碼和數據空間,每一個線程有獨立的運行棧和程序計數器(PC),線程切換的開銷小。
- 線程和進程最根本的區別在於:進程是資源分配的單位,線程是調度和執行的單位。
- 多進程: 在操做系統中能同時運行多個任務(程序)。
- 多線程: 在同一應用程序中有多個順序流同時執行。
- 線程是進程的一部分,因此線程有的時候被稱爲輕量級進程。
- 一個沒有線程的進程是能夠被看做單線程的,若是一個進程內擁有多個線程,進程的執行過程不是一條線(線程)的,而是多條線(線程)共同完成的。
- 系統在運行的時候會爲每一個進程分配不一樣的內存區域,可是不會爲線程分配內存(線程所使用的資源是它所屬的進程的資源),線程組只能共享資源。那就是說,除了CPU以外(線程在運行的時候要佔用CPU資源),計算機內部的軟硬件資源的分配與線程無關,線程只能共享它所屬進程的資源。
歡迎關注本站公眾號,獲取更多信息