SuperAPI AI 工具集

rust-core-async-runtime

编程与开发

查看项目

更新于 10-15 22:18

技能介绍

用途:面向需要理解 Rust 异步运行时原理的用户,讲解 async Rust 在运行时层面的工作方式,包括 Future trait、轮询它的执行器、Waker 契约、跨 .await 的 Send 规则以及运行时 crate 的选型。该技能只教心智模型,具体机制放在交叉引用的技能中(rust-syntax-async-await、rust-impl-async-tokio、rust-core-memory-model)。

主要能力:解释 Future、.await、Poll、Waker 是什么;回答该选哪个异步运行时(tokio、async-std、smol、embassy);诊断异步函数不运行或 future 永不完成的原因;解释 tokio::spawn 上的 Send 错误规则;高层介绍 Pin/Unpin;澄清 async 不等于并行;介绍结构化并发、JoinSet 与 abort-on-drop 语义。

核心模型:Rust 异步由四部分组成——Future(编译器生成的状态机,自身不运行)、Executor(轮询并驱动 future 完成)、Waker(告知执行器可再次轮询)、Reactor(epoll/kqueue/IOCP/io_uring 等 OS 事件源,触发 waker)。poll 返回 Ready 后不得再轮询,返回 Pending 前必须注册 waker,且只保留最近一次 poll 的 waker。执行器分单线程(任务无需 Send)与多线程工作窃取(任务须 Send + 'static)。

用法与限制:应用代码默认推荐 tokio;库作者可选 smol 或返回 Future 让调用方决定;no_std 嵌入式用 embassy;async-std 已基本弃用,新代码不应使用。同一进程不要混用两个运行时,不要在运行中的运行时内调用 block_on。避免在 async fn 中直接调用阻塞函数、跨 .await 持有 std::sync::MutexGuard、误以为 async fn 会自行运行、把 tokio::spawn 当作 OS 线程并行。需要响应式取消时应在长 CPU 循环中插入 .await 点或改用 spawn_blocking。

适用场景:学习或排查 Rust 异步运行时概念、选型与常见错误。具体语法、tokio 模式与 Pin 深层机制不在本技能范围,需查阅对应交叉引用技能。资料未提供收费、价格与平台信息。