条款17: 警惕共享状态并发性
“即使是最大胆的共享形式,在 Rust 中也能保证安全。”
官方文档将 Rust 描述为“不畏 并发“,但本项目将探讨为什么(可悲地)仍然有一些理由害怕并发,即使在 Rust 中也是如此。
此项特定于共享状态并行性:其中不同的执行线程与每个线程进行通信 其他通过共享内存。线程之间的共享状态通常会带来两个可怕的问题,无论 涉及语言:
- 数据争用:这些可能导致数据损坏。
- 死锁:这些可能导致您的程序停止运行。
这两个问题都是可怕的(“引起或可能引起恐怖”),因为它们很难调试 实践:故障是不确定的,通常更有可能在负载下发生,这意味着 它们不会出现在单元测试、集成测试或任何其他类型的 测试(第 30 项),但它们确实出现在生产环境中。
Rust 是向前迈出的一大步,因为它完全解决了这两个问题之一。然而,另一个仍然存在, 正如我们将看到的。