1. 概述 在 Linux 网络编程中,早期常使用 select 实现 I/O 多路复用。但 select 存在明显缺点: 采用轮询方式处理,监听的 fd 越多,效率越低; 受 fd_set 限制,默认最多监听 1024 个 fd; 每次调用都需要重新传入 fd 集合,用户态与内核态之间复制开销较大
一、整体设计思路 采用单级时间轮 + 轮次计数(Rounds)的方案: 时间轮是一个固定大小的数组(比如 SLOT_NUM = 64),每个数组元素是一个链表头,存储该时刻到期的所有任务。 每个任务节点(对应一个连接)存储两个关键值: slot:它挂在哪个槽位。 rounds:还需要等指针转满多少圈