目录 五种IO模型 阻塞IO 非阻塞IO 信号驱动IO IO多路转接 异步IO 小结 同步通信 vs 异步通信(synchronous communication/ asynchronous communication) 同步和异步关注的是消息通信机制 阻塞 vs 非阻塞 其他高级IO 非阻塞IO fcntl 实现函数SetNoBlock I/O多路转接之select 理解select执行过程 socket就绪条件 读就绪 写就绪 select的特点 select缺点 select使用示例: 检测标准输入输出 select使用示例 I/O多路转接之poll poll函数接口 返回结果 poll示例: 使用poll监控标准输入 I/O多路转接之epoll epoll初识 epoll的相关系统调用 epoll_create epoll_ctl epoll_wait 底层机制 epoll为什么高效? epoll工作原理 epoll的优点(和 select 的缺点对应) epoll工作方式 水平触发Level Triggered 工作模式 边缘触发Edge Triggered工作模式 对比LT和ET 理解ET模式和非阻塞文件描述符 epoll的使用场景 epoll中的惊群问题 epoll示例: epoll服务器(LT模式) tcp_epoll_server.hpp epoll示例: epoll服务器(ET模式) tcp_socket.hpp tcp_epoll_server.hpp 五种IO模型