系統(tǒng)調(diào)用可能是由多個(gè)任務(wù)組成的,所以可以拆成多個(gè)任務(wù),這就是多路復(fù)用。
舉例理解
你早上去買(mǎi)現(xiàn)炸油條,點(diǎn)單收錢(qián)和炸油條原來(lái)都是由一個(gè)人完成的,現(xiàn)在他成了瓶頸,所以專(zhuān)門(mén)找了個(gè)收銀員下單收錢(qián),他則專(zhuān)注在炸油條。(本質(zhì)上炸油條是耗時(shí)的瓶頸,將他職責(zé)分離出不是瓶頸的部分,比如下單收銀,對(duì)應(yīng)到系統(tǒng)級(jí)別也時(shí)一樣的意思)
Linux 中IO圖例
使用 select 或者 poll 等待數(shù)據(jù),并且可以等待多個(gè)套接字中的任何一個(gè)變?yōu)榭勺x,這一過(guò)程會(huì)被阻塞,當(dāng)某一個(gè)套接字可讀時(shí)返回。之后再使用 recvfrom 把數(shù)據(jù)從內(nèi)核復(fù)制到進(jìn)程中。
它可以讓單個(gè)進(jìn)程具有處理多個(gè) I/O 事件的能力。又被稱(chēng)為 Event Driven I/O,即事件驅(qū)動(dòng) I/O。