Tagged rust.

Rust Async:从 Future 到运行时

Rust 的 async 不是“把同步代码自动变快”的魔法。它更像是一套协作式调度模型:把一个可能等待 I/O 的任务拆成可以暂停和恢复的状态机,让线程在等待期间去处理别的工作。 理解这一点之后,很多问题都会变得清楚:为什么 async fn 返回的是 Future,为什么需要运行时,为什么不能随便在异步函数里阻塞线程,以及为什么有些变量跨过 .await 之后会让编译器变得很严格。 Future 是惰性的 在 Rust 里,调用一个 async fn 不会立刻执行函数体,而是创建一个实现了 Future 的值。这个值描述了一段“将来可以推进”的计算。 Future 只有被 executor 轮询时才会向前推进。.await 的含义也不是“开一个新线程等结果”,而是“把当前任务暂停,等这个 Future 可以继续时再恢复”。 可以把 Future 粗略理解成这样: 当

9 min read · #rust #async #tokio