无所畏惧的并发
安全高效地处理并发编程是 Rust 的另一个 主要目标。并发编程,其中程序的不同部分 独立执行和并行编程,其中 程序执行的同时,变得越来越重要 计算机利用其多个处理器。历史 在这些上下文中编程很困难且容易出错:Rust 希望 改变这一点。
最初,Rust 团队认为确保内存安全和防止 并发问题是两个不同的挑战,需要用不同的 方法。随着时间的推移,团队发现所有权和类型系统是 一组功能强大的工具,可帮助管理内存安全和并发 问题!通过利用所有权和类型检查,许多并发错误 是 Rust 中的编译时错误,而不是运行时错误。因此,宁愿 而不是让你花很多时间试图重现确切的情况 在运行时并发 bug 下,不正确的代码将拒绝 编译并显示一个错误来解释问题。因此,您可以修复 您的代码,而不是可能在它之后 已发货到生产环境。我们将 Rust 的这一方面昵称为无所畏惧的并发。Fearless 并发允许您编写无需 细微的 bug,并且易于重构而不会引入新的 bug。
注意:为了简单起见,我们将许多问题称为并发,而不是更准确地说是并发和/或 平行。如果这本书是关于并发和/或并行的,那么我们会 更具体。对于本章,请在脑海中替换并发 和/或 parallel。
许多语言对它们提供的处理解决方案都是教条的 并发问题。例如,Erlang 具有 消息传递并发,但只有模糊的方式可以在 线程。仅支持可能的解决方案的子集是合理的 策略,因为高级语言承诺 从放弃一些控制权以获得抽象中受益。但是,较低级别的 语言应提供在任何 给定的情况,并且对硬件的抽象较少。因此,Rust 提供了各种工具,用于以任何适当的方式对问题进行建模 根据您的情况和要求。
以下是我们将在本章中介绍的主题:
- 如何创建线程以同时运行多段代码
- 消息传递并发,其中通道在线程之间发送消息
- 共享状态并发,其中多个线程可以访问某个部分 数据
- 和 trait 的 API API 的 API API 的 trait 将 Rust 的并发保证扩展到
用户定义的类型以及 Standard Library 提供的类型
Sync
Send
本文档由官方文档翻译而来,如有差异请以官方英文文档(https://doc.rust-lang.org/)为准