和 是 Rust 中并发编程的两个核心工具,但它们基于完全不同的并发模型。 简单来说: 创建的是操作系统级线程,而 创建的是异步任务(协程)。 以下是它们在底层原理、性能开销、调度方式和适用场景上的详细对比: 1. 核心模型对比 | 特性 | | | | :--- | :--- | :--- | | 底层实体 | OS 线程 (1:1 模型) | 异步任务 / 协程 (M:N 模型) | | 映射关系 | 1 个 Rust 线程对应 1 个操作系统线程 | 成千上万个任务复用少量的 OS 线程 (通常等于 CPU 核心数) | | 内存开销 | 大。每个线程默认约 2MB 栈空间 (可配置) | 极小。每个任务仅需几百字节 (状态机大小) | | 切换成本 | 高。涉及内核态/用户态切换 (Context Switch) | 极低。仅在用户态切换,相当于函数调用 | | 调度方式 | 抢占式 (Preemptive)。由操作系统内核决定何时暂停/运行 | 协作式 (Cooperative)。任务必须主动 让出控制权 | 2. 详细区别解析 A. 调度机制与阻塞 (Blocking...