fd_set 位图原理 · 内核工作流程 · 1024 上限触底体验
下方是一个 1024 位的位图(这里只画前 256 位),点击任意 bit 切换状态,或在输入框里输入 fd 编号操作。每个 bit 对应一个 fd——这就是 select 监听集合的本质。
每次 select 调用涉及 5 个步骤——把整个 fd_set 来回拷贝、O(n) 加入等待队列、O(n) 检查就绪。这就是它慢的真相。
输入一个 fd 编号,看 FD_SET 是合法还是越界。1024 是编译期硬上限——这就是 poll 和 epoll 出现的关键诱因。