学习线程编程有哪些好的资源?

时间:2008-08-05 15:42:10

标签: multithreading language-agnostic concurrency

随着桌面多核CPU的兴起,多线程技能将成为程序员的宝贵资产。您是否可以为希望了解线程编程的程序员推荐一些好的资源(书籍,教程,网站等)?

17 个答案:

答案 0 :(得分:18)

看看Herb Sutter的“The Free Lunch Is Over”,然后看看Effective Concurrency上的一系列文章。

答案 1 :(得分:10)

Joseph Albahari在C#中详细描述了线程:

http://www.albahari.com/threading/

答案 2 :(得分:6)

我老实说从来没有读过这本书,但Concurrent Programming in Java是我听过几个人推荐的一本书。

答案 3 :(得分:5)

答案 4 :(得分:4)

我在my blog上用C ++写了关于多线程和并发的文章。我也在写一本关于C ++并发性的书:C++ Concurrency in Action

答案 5 :(得分:2)

我已经阅读了Brian Goetz(大部分)Java Concurrency in Practice,这非常好。

显然有一个基于Java的主题贯穿本书(使用线程,锁等的Java特定实现),但几乎所有原则都可以应用于其他语言。

作者的主页包含他撰写的list of articles,其中一些包括与线程相关的内容。也许从那里开始,如果你喜欢他的风格,买书。

答案 6 :(得分:2)

对于C#(或一般.NET)中的并发编程的一个很好的指导和参考,我推荐Vance Morrison在MSDN上发表的MSDN What Every Dev Must Know About Multithreaded Apps文章。它包含大量关于多线程开发的最佳实践信息和警告

答案 7 :(得分:2)

这是特定于Delphi的,但没有理由说这个概念不适用于任何其他语言!

Multi Threading Tutorial

答案 8 :(得分:2)

我在以下位置维护了并发文章,博客和项目的链接博客:

http://concurrency.tumblr.com

我经常在各种环境(Erlang,Java,Scala,.NET,C ++,Ruby,Python等)中发布一两个关于各种主题(线程,演员,锁定,并行编程)的链接。 。

答案 9 :(得分:1)

http://www.cilk.com/multicore-e-book/

这是一个很好的概述,如果你正在寻找图书和书籍,最好指定一种语言作为起点,这样你就可以搞砸一些代码。

答案 10 :(得分:1)

CPU制造商网站有一些有趣的内容:

http://developer.amd.com/documentation/articles/Pages/default.aspx#parallel

http://software.intel.com/en-us/multi-core

英特尔的开源线程库也有一些很好的参考:

http://www.threadingbuildingblocks.org/

答案 11 :(得分:1)

为了对这个主题进行丰富,彻底的处理,在计算机科学与实践之间取得良好的平衡,我建议The Art of Multiprocessor Programming。很多例子都是面向对象的代码,即Java,其他语言分散在各处。它只取决于所涵盖的主题。我真正喜欢这本书的是它讨论了如何在并发设计中实现常见算法。当然,还有更多!

对于一般概念和pthreads的处理,我真的很喜欢Programming with POSIX Threads。作为它的库和API,它在C中。

对于Windows和C#开发人员,请查看Joe Duffy's blog。 Joe致力于Microsoft开发人员部门的并行库,基础架构和编程模型。他有一本书于2008年11月出版,名为Concurrent Programming on WindowsAmazon link)。

另外,不要错过教父的博客:Herb Sutter的Sutter's Mill。他与Dobb博士期刊中的所有文章都有链接。点击他的Concurrency category

答案 12 :(得分:1)

如果你想要做一个简单任务的高度并行版本,或者看到真正的解决方案,你可能会比查看wide finder项目更糟糕。基本上它是关于如何有效地进行日志文件的并行正则表达式匹配,但尝试尽可能少地添加代码。

参与者提交了多种语言的解决方案,并发布了performance results。原始项目现已完成,现在wide finder 2正在开展工作。

CodingHorror有一个很好的introduction to wide finder

答案 13 :(得分:1)

我认为Boost.Threads是一个很棒的C ++并发库,尤其是如果您只想开始编写多线程应用程序的话。代码非常简洁易懂,加上下一个C ++标准可能包括基于Boost.Threads的线程库(教程:http://www.ddj.com/cpp/184401518

答案 14 :(得分:1)

我不知道您究竟在寻找什么,但如果您正在进行WindowsForms开发,那么以下博客文章每分钟都值得阅读: WinForms UI Thread Invokes: An In-Depth Review of Invoke/BeginInvoke/InvokeRequred

答案 15 :(得分:1)

Erlang编程语言提供了一种易于使用的并发编程风格。您可能永远不会使用Erlang,但这些概念可以传输到其他语言。您可能希望阅读编程Erlang:并发世界的软件这本书。

功能编程的粉丝声称没有必要学习任何新东西。只需使用纯函数语言,编译器或解释器就会自动并行化所有内容。所以你可能想学习Haskell,OCaml或其他函数式语言。

答案 16 :(得分:0)

如果您使用C#,Gaston C. Hillar - Packt Publishing - http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book的书“C#2008和2005线程编程”将对您有所帮助。 强烈建议C#程序员使用,因为您可以使用有趣的示例下载代码,以利用您的多核计算机。 这本书是一个很好的指南,有很多代码可供练习。它讲述了故事,同时解释了最困难的概念。