标签: epoll
与该标签相关的所有文章 "epoll".
-
mio(三):平台后端-epoll、kqueue、IOCP
mio 在三个平台上的封装策略完全不同。Linux epoll 和 macOS kqueue 都是 Reactor 模型的原生映射,mio 的封装很薄。Windows IOCP 是 Proactor 模型,mio 必须用 AFD(Auxiliary Function Driver)这个底层驱动来模拟 Reactor 语义——这是 mio 中最复杂的代码路径。
-
C++ 网络编程:epoll、Reactor 与 one loop per thread
C++ 标准库到 C++20 都没有网络库(Networking TS 因 executor 重构被无限期搁置)。Linux 生产方案是 epoll ET + Reactor 模式 + one loop per thread:主 Reactor accept 连接分发到工作线程池,每个工作线程独占 EventLoop 处理自己的连接,通过 eventfd 跨线程唤醒、timerfd 统一定时器、sharedptr + weakptr 管理 TcpConnection 生命周期。muduo 是国内 C++ 服务器开发事实上的学习范本。
-
Linux I/O(一):epoll 高性能的本质与使用要点
epoll 把 select/poll 的 O(n) 轮询重构为「注册一次 + 设备就绪时回调插入链表」的事件驱动模型;正确使用的核心是 ET 必须配非阻塞 + 循环到 EAGAIN、EPOLLERR/EPOLLHUP 无需请求但必须处理、close 前必须显式 EPOLLCTLDEL(防 dup 场景的悬垂监听)。
-
Go 运行时(三):netpoller 如何用 epoll 与 gopark 跑异步 I/O
Go 运行时在创建网络 socket 时将其设为非阻塞,当 Read/Write 返回 EAGAIN 时,通过 gopark 挂起 goroutine(不占 OS 线程),将 fd 注册到 epoll/kqueue(边缘触发),就绪后通过调度器的 findRunnable 或 sysmon 唤醒 goroutine 重试——用户写的是同步代码,运行时跑的是异步 I/O。