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