進程可以看做獨立應用,線程不能
資源:進程是cpu資源分配的最小單位(是能擁有資源和獨立運行的最小單位);線程是cpu調度的最小單位(線程是建立在進程的基礎上的一次程序運行單位,一個進程中可以有多個線程)。
通信方面:線程間可以通過直接共享同一進程中的資源,而進程通信需要借助 進程間通信。
調度:進程切換比線程切換的開銷要大。線程是CPU調度的基本單位,線程的切換不會引起進程切換,但某個進程中的線程切換到另一個進程中的線程時,會引起進程切換。
系統開銷:由于創建或撤銷進程時,系統都要為之分配或回收資源,如內存、I/O 等,其開銷遠大于創建或撤銷線程時的開銷。同理,在進行進程切換時,涉及當前執行進程 CPU 環境還有各種各樣狀態的保存及新調度進程狀態的設置,而線程切換時只需保存和設置少量寄存器內容,開銷較小。