mio
围绕 Rust Reactor 基石 mio 的架构、后端与使用边界。
-
mio(三):平台后端-epoll、kqueue、IOCP
mio 在三个平台上的封装策略完全不同。Linux epoll 和 macOS kqueue 都是 Reactor 模型的原生映射,mio 的封装很薄。Windows IOCP 是 Proactor 模型,mio 必须用 AFD(Auxiliary Function Driver)这个底层驱动来模拟 Reactor 语义——这是 mio 中最复杂的代码路径。
-
mio(二):核心架构-Poll、Token、Interest、Events
mio 的核心由 6 个类型组成:Poll(事件循环)、Registry(注册表)、Token(事件标识)、Interest(监听意图)、Events(事件集合)、Source trait(可轮询的 I/O 源)。整个 API 没有一个回调函数、没有一个 closure——全靠整数 Token 做事件分发。这是有意为之的设计决策,为了与 Rust 的 ownership 模型兼容。
-
mio(一):Rust 异步生态的 Reactor 基石
mio 是 Rust 生态中对操作系统 I/O 事件通知机制(epoll/kqueue/IOCP)的薄封装,由 Carl Lerche 创建,当前版本 1.2.1。它刻意只做一件事:事件就绪通知。没有 timer、没有 buffer、没有 async/await。tokio 和整个 Rust 异步生态建在 mio 之上。它与 C++ Asio 的核心差异:Asio 选 Proactor 是因为要向 IOCP 对齐;mio 选 Reactor 是因为 Rust 语言特性(ownership + async/await)让 Reactor 模式更自然,而 IOCP 的适配代价由 mio 在内部消化。