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