随着多核CPU在桌面上的兴起,多线程技能将成为程序员的宝贵资产。你可以为想要了解线程编程的程序员推荐一些好的资源(书籍,教程,网站等)吗?学习线程编程有什么好的资源?
回答
看看香草萨特的“The Free Lunch Is Over”,然后他的一系列关于Effective Concurrency文章。
我说实话从来没有读过它自己,但Concurrent Programming in Java是一本书,我听说推荐几个人。
http://www.cilk.com/multicore-e-book/
这就是sitution的一个很好的概述,如果你正在寻找tuorials和书籍它可能是最好的指定语言为出发点,因此您可以使用一些代码陷入混乱。
Erlang编程语言提供了并行编程的简单易用的风格。你可能永远不会真正使用Erlang,但这些概念可以传送到其他语言。您可能想要阅读编程Erlang:并行世界软件。
函数式编程的粉丝声称不需要学习任何新东西。只需使用纯函数式语言,编译器或解释器就会自动并行处理所有内容。所以你可能想学习Haskell,OCaml或其他函数式语言。
约瑟夫阿尔巴哈利在C#中写到这里线程的一个很好的概述:
我读过(大部分)Java Concurrency in Practice Brian Goetz撰写,这是非常好的。
显然有(使用Java的线程,锁等具体实现),通过这本书上运行的基于Java的主题,但几乎所有的原则可以应用到其他语言。
作者的主页包含list of articles他写的,其中包括一些线程相关的东西。也许从那里开始,如果你喜欢他的风格,那就买这本书吧。
对于C#(或.NET中的并发编程)的一个很好的指导和参考,我建议在MSDN上使用Vance Morrison的MSDN What Every Dev Must Know About Multithreaded Apps文章。它包含了大量关于多线程开发的最佳实践信息和注意事项
我不知道你到底在找什么,但是如果你在做WindowsForms开发,以下博客文章值得每分钟阅读: WinForms UI Thread Invokes: An In-Depth Review of Invoke/BeginInvoke/InvokeRequred
我觉得如Boost.Threads是一个伟大的C++并发库的学习,特别是如果你只是想以书面形式多线程应用程序启动。代码非常简洁易懂,再加上下一个C++标准可能会包含一个基于Boost.Threads的线程库(教程:http://www.ddj.com/cpp/184401518)
如果您想要做一个高度并行版本的简单的任务,或看到真正的解决方案,你可能会比看项目wide finder更糟糕。基本上它是关于如何有效地执行日志文件的并行正则表达式匹配,但是尝试添加尽可能少的代码。
参与者已经提交了许多不同语言的解决方案,并且发布了performance results。原来的项目已经完成,现在有wide finder 2正在开展工作。
对于丰富,彻底治疗的个体,拥有计算机科学与实践之间的良好平衡,我建议The Art of Multiprocessor Programming。很多示例都是面向对象的代码,即Java,其他语言分散在各处。这取决于所涉及的主题。我真的很喜欢这本书,它讨论了如何在并行设计中实现常用算法。当然,还有更多!
对于pthreads的一般概念和处理,我真的很喜欢Programming with POSIX Threads。作为它的库和API,它在C.
对于Windows和C#开发人员,请查看Joe Duffy's blog。 Joe从事微软开发部门的并行库,基础架构和编程模型。他有一本2008年11月发行的书名为Concurrent Programming on Windows(Amazon link)。
另外,千万不要错过教父的博客:Herb Sutter的Sutter's Mill。他与Dobb博士的杂志上的所有文章都有联系。点击他的Concurrency category。
我保持linkblog并发文章,博客,以及在项目:
我通常张贴各种主题的每天一个链接或两个(线程,演员,锁定,并行编程)在各种环境中(Erlang,Java,Scala,.NET,C++,Ruby,Python等)。
CPU制造商的网站有一些有趣的内容:
http://developer.amd.com/documentation/articles/Pages/default.aspx#parallel
http://software.intel.com/en-us/multi-core
而且英特尔的开源线程库有一些很好的参考:
这是Delphi专用的,但没有理由为什么这个概念不适用于任何其他语言!
我写上my blog多线程和并发在C++中。我还写了一本关于C++并发性的书:C++ Concurrency in Action。
如果您使用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#程序员,因为您可以使用利用多核计算机的有趣示例下载代码。这本书是一个很好的指导,有很多代码来练习。它讲述了故事,同时解释了最困难的概念。
- 1. 学习网络编程有什么好的资源?
- 2. 学习如何编程动画有什么好的资源?
- 3. 学习COM编程有什么好的资源?
- 4. .NET Stream编程有什么好的学习资源?
- 5. 学习Grails有什么好的资源?
- 6. 学习json有什么好的资源?
- 7. 在Python中学习CGI编程的好资源是什么?
- 8. 什么是学习XNA的好资源?
- 9. 用于学习线程的资源
- 10. 用.net学习多线程的好源?
- 11. 学习pycURL有什么好的教程?
- 12. 学习编程的好的音频源?
- 13. 学习按位编程的资源?
- 14. 学习pyqt的好资源?
- 15. 良好的资源来学习IMAP编程
- 16. 学习使用Selenium来测试Rails应用程序有什么好的资源?
- 17. 学习HttpContext,Request和Response有什么好的资源?
- 18. 学习使用NAnt有什么好的资源?
- 19. 学习如何实现Scheme宏有什么好的资源?
- 20. 什么是一些很好的机器学习编程练习?
- 21. 资源学习MFC程序员的GNOME应用程序编程?
- 22. 学习HTML和学习编程语言有什么区别?
- 23. 对于有经验的ASP.NET开发人员来说,学习Windows Forms/WPF编程有什么好的资源?
- 24. 什么是学习MASM代码(不是HLA)的好资源?
- 25. 什么是学习Zend框架的好资源?
- 26. 什么是学习System.Speech API的好资源?
- 27. 什么是学习仿制药的好资源?
- 28. 什么是学习人工神经网络的好资源?
- 29. 什么是学习高级SSIS的好资源?
- 30. 学习应用程序编程的最佳资源? (.Net/Cocoa/etc)
这是一个关于这个问题的好教程。 – spoulson 2008-09-26 12:42:34
这确实帮了我。 – ThatBloke 2008-10-09 13:04:35