并發(fā)的作用:
- 訪問(wèn)慢速I(mǎi)/O設(shè)備
- 人機(jī)交互。(在執(zhí)行一個(gè)任務(wù)的時(shí)候,用戶(hù)依然可以進(jìn)行其他操作)
- 服務(wù)多個(gè)網(wǎng)絡(luò)客戶(hù)端
- 多核機(jī)器上進(jìn)行并行計(jì)算
并發(fā)的三種方式:
- 進(jìn)程
每個(gè)進(jìn)程有獨(dú)立的虛擬空間,所以要和其他進(jìn)程通信,需使用要通過(guò)進(jìn)程間通信(IPC)機(jī)制。
優(yōu)點(diǎn):每個(gè)進(jìn)程有獨(dú)立的進(jìn)程空間。
缺點(diǎn):需使用IPC進(jìn)行通信,開(kāi)銷(xiāo)較大。 - I/O多路復(fù)用
- 線(xiàn)程
優(yōu)點(diǎn):共享進(jìn)程的上下文,由內(nèi)核自動(dòng)調(diào)度。
線(xiàn)程內(nèi)存模型:
每個(gè)線(xiàn)程運(yùn)行在一個(gè)進(jìn)程的上下文中,但每個(gè)線(xiàn)程都有自己獨(dú)立的線(xiàn)程上下文,包括:
線(xiàn)程ID,棧,棧指針,程序計(jì)數(shù)器,條件碼,通用目的寄存器值。
寄存器的值是不共享的,而進(jìn)程的內(nèi)存區(qū)域是共享的。