知识卡片
I/O多路复用的核心思想
内容
进程同时处理多连接时,逐个轮询判断是否有数据可读会浪费大量CPU;I/O多路复用让进程只在一个聚合阻塞点等待(select/epoll/kqueue),操作系统在任意连接就绪时主动唤醒并告知,进程才去处理,从而一个进程/线程支撑海量连接,这是Reactor模式的技术基础。发散:与其让调用方主动轮询状态,不如把探测责任下沉给底层,只需注册回调被动等待——这思路在消息队列、观察者模式中反复出现。
参考来源
- 位置:《从0开始学架构》第23章《19|单服务器高性能模式:Reactor与Proactor》"Reactor"一节(源文件:_epub-src/OEBPS/Text/part0022_split_000.html)
- 结论依据:原文明确"当多条连接共用一个阻塞对象后,进程只需要在一个阻塞对象上等待,而无须再轮询所有连接,常见的实现方式有select、epoll、kqueue等",并说明"I/O多路复用结合线程池,完美地解决了PPC和TPC的问题……大神们给它取了一个很牛的名字:Reactor"。
- 原始内容:当多条连接共用一个阻塞对象后,进程只需要在一个阻塞对象上等待,而无须再轮询所有连接,常见的实现方式有select、epoll、kqueue等……I/O多路复用结合线程池,完美地解决了PPC和TPC的问题,而且"大神们"给它取了一个很牛的名字:Reactor。