What are some good resources for learning threaded programming?
随着桌面上多核CPU的兴起,多线程技术将成为程序员的宝贵财富。你能为想要学习线程编程的程序员推荐一些好的资源吗?
看看Herb Sutter的"免费午餐结束了",然后看看他关于有效并发性的系列文章。
Joseph Albahari在C语言中写了一个很好的线程概述:
http://www.albaria.com/threading/
老实说,我自己从来没有读过它,但是Java中的并发编程是我听到的一些人推荐的一本书。
网址:http://www.yoda.arachsys.com/csharp/threads/
我在博客上写了多线程和并发的C++。我还写了一本关于C++中并发性的书:C++中的并发操作。
它是Delphi特有的,但没有理由不将这个概念应用于任何其他语言!
多线程教程
我为并发文章、博客和项目维护了一个LinkBlog,位于:
TopBr.com
我通常在各种各样的环境(Erlang,Java,斯卡拉,.NET,C++,露比,Python等)上每天在一个或两个主题上发布一个或两个链接(线程、参与者、锁定、并行编程)。
为了更好地指导和参考C(或一般的.NET)中的并发编程,我建议每个开发人员都必须知道的关于Vance Morrison在msdn上的多线程应用程序文章的msdn。它包含大量关于多线程开发的最佳实践信息和注意事项。
我在Brian Goetz的实践中已经阅读(大部分)Java并发,这非常好。
显然有一个基于Java的主题贯穿于书中(使用线程、锁等Java特定的实现),但是几乎所有的原则都可以应用到其他语言。
作者的主页包含了他所写文章的列表,其中一些包括线程相关的内容。也许从那里开始,如果你喜欢他的风格,那就买这本书。
如果你想尝试做一个简单任务的高度并行版本,或者看到真正的解决方案,你可能做得比看广域搜索项目更糟糕。基本上,它是关于如何有效地对日志文件进行并行regex匹配,但是尽量少添加代码。
参与者以多种语言提交了解决方案,并发布了绩效结果。原来的项目现在已经完成,现在有广域查找器2正在进行工作。
编码恐怖很好地介绍了广域搜索。
http://www.cilk.com/multicore-e-book/
这是对情景的一个很好的概述,如果你在寻找周二和书籍,最好指定一种语言作为起点,这样你就可以乱搞一些代码。
Erlang编程语言提供了一种易于使用的并发编程风格。您可能从未实际使用过erlang,但这些概念可以移植到其他语言。您可能想阅读《为并行世界编程Erlang:软件》这本书。
函数编程的爱好者声称没有必要学习任何新东西。只需使用纯函数语言,编译器或解释器将自动并行化所有内容。所以你可能想学习Haskell,OcAML,或者其他的函数语言。
我认为Booost。线程是一个很好的C++并发库,特别是如果你想开始编写多线程应用程序。代码非常简洁易懂,加上下一个C++标准可能包括基于Booost线程的线程库(教程:HTTP://www. DDJ.COM/CPP/184401518)。
为了丰富、彻底地处理这个主题,在计算机科学和实践之间取得良好的平衡,我推荐多处理器编程技术。许多例子是面向对象的代码,即Java,其他语言分散在整个。这取决于所涉及的主题。我真正喜欢这本书的是,它讨论了在并行设计中如何实现常见的算法。当然,还有很多!
对于一般的概念和pthreads的处理,我真的很喜欢使用POSIX线程进行编程。作为库和API,它在C中。
对于Windows和C开发人员,请查看Joe Duffy的博客。Joe在微软开发部门从事并行库、基础设施和编程模型方面的工作。他在2008年11月出版了一本书,名为《Windows上的并发编程》(Amazon Link)。
另外,不要错过教父的博客:赫伯萨特的萨特磨坊。他在多布博士的杂志上有他所有文章的链接等等。单击他的并发类别。
CPU制造商网站有一些有趣的内容:
http://developer.amd.com/documentation/articles/pages/default.aspx并行
http://software.intel.com/en-us/multi-core(多核)
此外,英特尔的开源线程库也有一些很好的参考资料:
http://www.threadingbuildingblocks.org网站/
我不知道你到底在找什么,但是如果你正在开发WindowsForms,那么下面的博客文章值得每分钟阅读:Winforms UI线程调用:对invoke/begininvoke/invokeRequred的深入检查
如果您使用C,那么由Gaston C.Hillar-Packt Publishing-http://www.packtpub.com/beginners-guide-for-c-sharp-2008-and-2005-thread-programming/book撰写的"C 2008和2005线程编程"一书将对您有所帮助。强烈推荐C程序员使用,因为您可以下载代码,其中包含利用多核计算机的有趣示例。这本书是一本很好的指南,有很多要实践的代码。它讲故事,同时解释最困难的概念。