← 学习中心

Tokio 与 async/await

Future、运行时与 .await 要点

本节你将能

写基本 async 函数,并说明 Tokio 运行时的角色。

直觉模型

async 函数返回「未完成的收据」(Future);运行时像餐厅服务员,谁就绪就继续上菜,不必为每个请求占一条 OS 线程。

核心要点

  • async fn 内用 .await 等待 Future
  • 需要 #[tokio::main] 或手动 Runtime 驱动
  • 跨 await 持有的类型通常需满足 Send(在多线程运行时)
#[tokio::main]
async fn main() {
    let body = reqwest::get("https://example.com").await.unwrap();
    println!("status {}", body.status());
}

常见误区

在 async 里调用阻塞函数却不放进 spawn_blocking——会卡住调度器。

动手

用 tokio::time::sleep 并发等待两个延时任务。

互动

完成测验;第六章用 Axum 搭 Web 服务。

本节小结

线程适合计算并行;async 适合高并发 IO。

Tokio 与 async/await | 必学必会