rust线程模型

0 阅读2分钟

Rust 的线程模型经历了从早期的“绿色线程”(Green Threads,M:N 模型)到现代原生线程(Native Threads,1:1 模型)的演变。目前,Rust 标准库(std::thread)采用的是 1:1 线程模型。 以下是 Rust 线程模型的深度解析: . 核心模型:1:1 映射 (Native Threads) 在现代 Rust 中,一个 Rust 逻辑线程直接对应一个操作系统内核线程。 机制:当你调用 std::thread::spawn 时,Rust 运行时直接向操作系统(如 Linux 的 pthreads, Windows 的 Win32 Threads)请求创建一个新线程。 优点: 真正的并行:多个线程可以真正地在多核 CPU 上同时运行,充分利用多核性能。 阻塞安全:如果一个线程执行了阻塞操作(如磁盘 I/O、网络等待),只有该线程被操作系统挂起,其他线程不受影响,继续运行。 简单直观:调试和行为预测相对容易,因为线程调度完全由成熟的操作系统内核负责。 缺点: 开销较大:创建和销毁内核线程的开销比用户态线程大。 数量限制:受限于操作系统资源,通常只能创建几千到几万个线程(取决于栈大小和系统配置),无法像绿色线程那样轻松创建百万级线程。 历史背景:Rust 早期(0.9 版本之前)曾尝试过 M:N 模型(绿色线程),即由 Rust 运行时在少量内核线程上调度大量用户态线程。但由于实现复杂度极高、与 C 库交互困难以及性能优化瓶颈,Rust 核心团队最终决定移除绿色线程,全面转向 1:1 模型,将复杂调度交给操作系统或用户空间的异步运行时(如 Tokio)。