I/O 多路複用技術是指利用單個線程處理多個網絡 I/O,我們常說的
select
、
epoll
就是用來輪詢所有 socket 的函數。比如 Apache 采用了前者,而 Nginx 和 Node.js 使用了後者,差別在于後者效率更高。由于 I/O 多路複用實際上還是單線程的輪詢,是以它也是一種非阻塞 I/O 的方案。
異步 I/O 是最理想的 I/O 模型,然而可惜的是真正的異步 I/O 并不存在。 Linux 上的 AIO 通過信号和回調來傳遞資料,但是存在缺陷。現有的 libeio 以及 Windows 上的 IOCP,本質上都是利用線程池與阻塞 I/O 來模拟異步 I/O。
連結位址:https://juejin.im/post/57b54f151532bc0063ebfe31