为并发编程方法推荐一个很好的资源?

时间:2012-08-22 12:28:11

标签: concurrency

我已经阅读了各种关于并发的点点滴滴,但希望找到一个能够详细说明并比较各种方法的资源。理想情况下,接受线程,合作例程,消息传递,演员,期货......以及其他任何我可能还不知道的新内容!

更倾向于编写指导程序而不是理论/数学方面的东西。

谢谢。

4 个答案:

答案 0 :(得分:19)

我推荐Pacheco An Introduction to Parallel Programming。它写得很清楚,是并行编程的一个很好的介绍。

如果您不关心与某种语言相关的内容,那么Java Concurrency in Practice就是一个很好的资源。

Oracle的online tutorial是免费的,但可能比您正在寻找的更简洁。


话虽这么说,最好的并发教师可能就是经验。我自己试着去做一些练习。首先模拟Dining Philosophers problem。这是经典之作。

答案 1 :(得分:12)

首先,让我们看看你是否对这个话题感兴趣。要掌握关于并发性的大图,最佳做法是查看操作系统书籍,例如Operating systems internal by StalingsModern operating systems by Tanenbaum。他们可以让你直觉了解这是什么。
还有一本旧书,名为Ben-Ari的Concurrent编程。如果你找到它,它会很有帮助。

除了阅读教科书之外,通过编写一些并发程序可以很好地解决问题。如果你想开始使用线程,Python是一个非常好的选择。每本Python书都有一个专门讨论这个主题的部分。另外,通过简单的网络搜索,你可以找到很多关于它的资源,但我给出了这两个更高的偏好:
Multithreaded Programming (POSIX pthreads Tutorial),一个关于并发和多线程的非常全面的介绍。它主要是关于C多线程 另一个是Thread Synchronization Mechanisms in Python

现在,如果您仍然发现自己对并发编程感兴趣,那么现在是时候深入了解。您几乎掌握了并发的基本知识,现在最好的方法是开始解决问题并熟悉模式。要实现此目标,您可以使用The Little Book of Semaphores。它是该领域最好的书籍之一,也是免费的。这本书可以引导您精通并发编程。

如果你想接近并发编程,这些应该足够了,但是如果你有足够的时间,并且你很渴望,那么看看其他一些并发编程的范例,比如演员,这是很好的。在Erlang中使用。我说有必要阅读本书Seven Languages in Seven Weeks的一些章节,尤其是关于Erlang和IO的章节。乍一看,它可能很难也很奇怪,但熟悉其他并发解决方案是很好的。

答案 2 :(得分:1)

我会推荐Peter Van Roy和Seif Haridi的Concepts, Techniques, and Models of Computer Programming。所有主要的编程技术都有关于并发编程的后续部分。此外,作者从基础开始,定义了主要的并发编程概念,它们的缺点,都附带了Oz编程语言的例子。

答案 3 :(得分:0)

如果您恰好是C#程序员或者有一天,我强烈推荐Michal Habalcik的this tutorial系列。