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