标签: async-io
与该标签相关的所有文章 "async-io".
-
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 在内部消化。
-
Linux I/O(二):io_uring 的双环模型与工程边界
iouring 的本质不是"更快的 epoll",而是用户态和内核态共享两个 mmap 环(SQ 提交环 / CQ 完成环)+ 完成模型(submit then wait for completion),统一覆盖文件 / socket / timer / futex 的异步。相较 epoll 的 readiness 模型,它在存储 I/O(libaio 无法 buffered)和syscall 密集场景(SQPOLL 下热路径零 syscall)有质变;对已优化过的 epoll 网络栈提升只有 10–30%。工程上的真实门槛是内核版本下限 ≥ 5.15、容器 seccomp 默认屏蔽、安全 CVE 历史重、多云厂商禁用,以及一条必须铭刻的规则:CQE 的完成顺序和 SQE 的提交顺序无关,必须靠 userdata 关联。