我已经阅读了有关并发的各种零碎文章,但希望找到一个详细说明和比较各种方法的资源。理想情况下,包括线程、协同程序、消息传递、演员、期货……任何我还不知道的新事物!
比起过于理论/数学的东西,更喜欢外行编码指南。
谢谢你。
我已经阅读了有关并发的各种零碎文章,但希望找到一个详细说明和比较各种方法的资源。理想情况下,包括线程、协同程序、消息传递、演员、期货……任何我还不知道的新事物!
比起过于理论/数学的东西,更喜欢外行编码指南。
谢谢你。
我推荐Pacheco的 An Introduction to Parallel Programming。它写得很清楚,是并行编程的一个很好的介绍。
如果您不关心与语言相关的东西,那么Java Concurrency in Practice是一个很好的资源。
Oracle 的在线教程是免费的,但可能比您要查找的内容更简洁。
话虽如此,并发最好的老师可能是经验。我自己会尝试进行一些练习。首先模拟餐饮哲学家问题。这是一个经典。
首先,让我们看看您是否对该主题感兴趣。要全面了解并发性,最佳实践是查看操作系统书籍,例如Stalings 的操作系统内部或Tanenbaum 的现代操作系统。他们可以让您直观地了解这一切。
还有一本旧书,名为 Ben-Ari 的并发编程。如果你找到它,它会很有帮助。
除了阅读教科书之外,通过编写一些并发程序来弄脏你的手是件好事。如果您想开始使用线程,Python 是一个非常好的选择。每本 Python 书籍都有专门讨论这个主题的部分。也可以在网上简单搜索一下,你可以找到很多关于它的资源,但我给这两个更高的偏好:
多线程编程(POSIX pthreads Tutorial),对并发和多线程的非常全面的介绍。主要是关于C多线程。
另一个是Python 中的线程同步机制。
现在,如果您仍然发现自己对并发编程感兴趣,那么是时候深入了解一下了。您几乎已经掌握了并发的基本知识,现在最好的方法是开始解决问题并熟悉模式。为了实现这个目标,您可以使用The Little Book of Semaphores。这是该领域最好的书籍之一,而且它也是免费的。这本书可以引导你精通并发编程。如果您想接近
,这些应该足够了并发编程,但是如果你有足够的时间,并且你很热心,那么看看其他一些并发编程的范例是很好的,比如Erlang中使用的演员。我说七周内的七种语言这本书的一些章节值得阅读,尤其是关于 Erlang 和 IO 的章节。乍一看,这可能既困难又陌生,但熟悉其他并发解决方案是件好事。
我会推荐Peter Van Roy 和 Seif Haridi的《计算机编程的概念、技术和模型》 。所有主要的编程技术都有关于并发编程的后续部分。作者还从基础开始,定义了主要的并发编程概念、它们的缺点,并附有 Oz 编程语言的示例。
如果您碰巧是 C# 程序员,或者有一天,我强烈推荐Michal Habalcik 的这个教程系列。