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