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。