概念
- 進程,是計算機中的程序關(guān)于某個數(shù)據(jù)集合上的一次運行活動,是操作系統(tǒng)的基礎(chǔ),是系統(tǒng)進行資源分配和調(diào)度的基本單位,是程序的實體。
- 線程,是操作系統(tǒng)能夠進行運算資源調(diào)配的最小單位,它包含在進程中,
區(qū)別
- 進程是線程的容器,是資源分配的最小單位,一個進程可以開啟多個線程
- 線程是系統(tǒng)分配處理器資源的最小單位,進程之內(nèi)獨立執(zhí)行的一個單元流程,
- 進程一般由線程、內(nèi)存、文件/網(wǎng)絡(luò)句柄組成;線程一般由棧、PC(程序計數(shù)器)、TLS(線程本地存儲)組成
- 多進程就是多任務(wù);多線程就是一個任務(wù)內(nèi)多個順序流在執(zhí)行
- 系統(tǒng)開銷,進程在創(chuàng)建和銷毀的時候有系統(tǒng)分配和回收資源,開銷明顯大于線程的創(chuàng)建和回收
進程間的通信方式
- 共享內(nèi)存
- 管道和有名管道
- 消息隊列
- 信號 是在軟件層次上對中斷機制的一種模擬
- 信號量 主要作為進程之間及同一種進程的不同線程之間得同步和互斥手段
- 套接字 這是一種更為一般得進程間通信機制,它可用于網(wǎng)絡(luò)中不同機器之間的進程間通信,應(yīng)用非常廣泛
進程和線程的關(guān)系
- 一個線程只屬于一個進程,而一個進程可以有很多個線程
- 資源分配給進程,而同一個進程的多個線程貢獻(xiàn)這些資源
- 處理器資源調(diào)取分配給線程,所以真正在處理器上執(zhí)行的是線程
- 線程在執(zhí)行過程中,需要協(xié)作同步,多個線程一起把任務(wù)做完。而進程是大家干相同類似的活。
多線程的優(yōu)缺點
- 優(yōu)點:合理調(diào)度處理器資源,提升CPU利用率,提高處理速度
- 缺點:過多的線程,導(dǎo)致CPU的頻繁切換,會加重負(fù)擔(dān)