并发编程知识体系概览
为什么 Rust 的并发编程很重要?
Rust 的并发模型号称**"无畏并发"(Fearless Concurrency)**——通过所有权系统和类型系统在编译期消除数据竞争。与 C++ 的"祝你好运"和 Go 的"运行时检测"不同,Rust 让数据竞争成为编译错误。
核心知识点
线程与 Send/Sync
Send 和 Sync 这两个 marker trait 是 Rust 并发安全的基石,由编译器自动推导。
→ 详见 线程基础、Send 与 Sync
共享状态并发
通过 Mutex、RwLock、Arc 和原子类型实现安全的共享状态访问。
→ 详见 Mutex 与 RwLock、Arc 与原子类型
消息传递并发
Go 语言的 "Don't communicate by sharing memory; share memory by communicating" 在 Rust 中同样适用。
→ 详见 Channel 消息传递
异步编程
Rust 的 async/await 是零成本抽象——异步代码编译后的性能与手写状态机等价。
→ 详见 async/await 基础、Tokio 运行时、Future trait 与 Pin
同步 vs 异步选择
| 场景 | 推荐方案 | 原因 |
|---|---|---|
| CPU 密集型 | std::thread + Rayon | 真正的并行 |
| IO 密集型 | async + Tokio | 高并发低开销 |
| 少量并发任务 | std::thread | 简单直接 |
| 数千并发连接 | async + Tokio | 线程太重 |