第 19 章 并发(1)
吉姆•布兰迪
长远看来,不建议使用面向机器的语言编写大型并发程序,因为面向机器的语言允许不受限制地使用存储位置及其地址。这就意味着,即使借助复杂的硬件机制,我们也根本没有能力确保程序的可靠性。
——Per Brinch Hansen(1977 年)
“通信”的模式就是“并行”的模式。
——Whit Morriss
如果你看待并发的态度在职业生涯中发生过变化,那你并不是特例。这种现象太常见了。
起初,编写并发代码看起来既简单又有趣。线程、锁、队列等工具很容易上手,固然其中也有很多陷阱,但幸运的是我们知道都有哪些陷阱,并且多加小心就不会出错。
我们总有不得不调试其他人的多线程代码的情况,这时候,你只能得出以下结论:某些人确实不适合使用这些工具。
但迟早,你不得不调试自己的多线程代码。
过去的教训告诉你,如果还没有对多线程技术彻底失望,那么至少也应该对所有多线程代码保持适度的警惕。你偶尔会碰上几篇文章详细解释为什么一些看似正确的多线程惯用法却根本不起作用(与“内存模型”有关),这又进一步强化了这种警惕。但是,你最终会找到一种自己用起来顺手且不会经常出错的并发惯用法。你会把几乎所有经验都塞进那个惯用法中,并且,如果你真的很厉害,那么还能对凭空增加的复杂性说“不”。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了并发编程中的常见问题和解决方案,以及 Rust 语言在并发处理方面的优势。文章首先引用了两位专家的观点,指出了面向机器的语言编写大型并发程序的不足之处。接着,文章描述了在职业生涯中对并发编程态度的变化,以及在多线程代码调试中可能遇到的问题。随后,文章列举了系统程序员常用的几种并发处理方法,并指出了其中存在的潜规则和问题。接着,文章介绍了 Rust 提供的更好的并发处理方式,以及使用 Rust 线程的三种方法:分叉与合并并行、通道和共享可变状态。在具体介绍分叉与合并并行时,文章阐述了该模式的吸引力和主要缺点,并给出了在 Rust 中实现并行版本的示例。最后,文章提到了 Rust 对引用、可变性和生命周期的处理方式在并发编程中的价值,并强调了 Rust 在编写安全、快速、并发程序方面的优势。整体而言,本文通过介绍并发编程的问题和解决方案,以及 Rust 在并发处理方面的特点,为读者提供了全面的并发编程概览。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 程序设计(第 2 版)》
《Rust 程序设计(第 2 版)》
立即购买
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论