有什么好的学习线程编程的资源?
随着台式机上多核CPU的兴起,多线程技能将成为程序员的宝贵财富。我们可以为希望学习线程编程的程序员推荐一些很好的资源(书籍,教程,网站等)吗?
解决方案
回答
老实说,我自己从来没有读过它,但是Java的并发编程是我听过很多人推荐的书。
回答
http://www.cilk.com/multicore-e-book/
这是一个很好的概况,如果我们正在寻找讲习班和书籍,最好指定一种语言作为起点,以便我们可以弄乱一些代码。
回答
看看Herb Sutter的"免费午餐已经结束",然后看他有关有效并发的系列文章。
回答
Erlang编程语言提供了一种易于使用的并发编程风格。我们可能从未真正使用过Erlang,但是这些概念可以移植到其他语言。我们可能需要阅读《编程Erlang:并行世界的软件》一书。
函数式编程的爱好者声称,无需学习任何新知识。只需使用纯函数式语言,编译器或者解释器就会自动并行化所有内容。因此,我们可能想学习Haskell,OCaml或者其他功能语言。
回答
约瑟夫·阿尔巴哈里(Joseph Albahari)很好地概述了Chere中的线程:
http://www.albahari.com/threading/
回答
我已经阅读了Brian Goetz的(大部分)Java Concurrency in Practice,这非常好。
本书中显然有一个基于Java的主题(使用线程,锁等Java特定实现),但是几乎所有原理都可以应用于其他语言。
作者的主页包含他撰写的文章列表,其中一些文章包含与线程相关的内容。也许从那里开始,如果我们喜欢他的风格,那就买这本书。
回答
有关在C(或者一般.NET)中进行并发编程的出色指南和参考,我建议MSDN上的Vance Morrison撰写的MSDN《每个开发人员必须了解的多线程应用程序知识》一文。它包含了大量有关多线程开发的最佳实践信息和警告。
回答
我不知道我们到底在寻找什么,但是如果我们正在进行WindowsForms开发,那么值得每一分钟阅读以下博客文章:
WinForms UI线程调用:Invoke / BeginInvoke / InvokeRequred的深入审查
回答
我认为Boost.Threads是一个很棒的C ++并发库,特别是如果我们只想开始编写多线程应用程序时,就可以学习。该代码非常简洁易懂,再加上下一个C ++标准将可能包含基于Boost.Threads的线程库(教程:http://www.ddj.com/cpp/184401518)
回答
如果我们想尝试执行简单任务的高度并行版本或者查看实际的解决方案,则可能会比看广角寻像器项目做得更糟。基本上,它是关于如何有效地执行日志文件的并行正则表达式匹配,但是尝试添加尽可能少的代码。
参与者以多种不同的语言提交了解决方案,并发布了性能结果。最初的项目现已完成,现在有finder 2正在进行这项工作。
CodingHorror对宽屏取景器有很好的介绍。
回答
http://www.yoda.arachsys.com/csharp/threads/
回答
为了对该主题进行丰富而彻底的处理,并在计算机科学和实践之间取得良好的平衡,我建议我们使用《多处理器编程的艺术》。许多示例是面向对象的代码(即Java),而其他语言则遍布其中。这仅取决于所涉及的主题。我真正喜欢这本书的地方是它讨论了如何在并发设计中实现通用算法。当然,还有更多!
对于一般概念和对pthread的处理,我真的很喜欢使用POSIX线程进行编程。作为库和API,它在C语言中。
对于Windows和Cdevelopers,请查看Joe Duffy的博客。 Joe在Microsoft开发人员部门从事并行库,基础结构和编程模型的工作。他有一本书将于2008年11月出版,名为《 Windows上的并行编程》(Amazon链接)。
另外,不要错过教父的博客:Herb Sutter的Sutter's Mill。他可以链接到他在《多布博士》杂志上发表的所有文章以及更多内容。单击他的并发类别。
回答
我在以下位置维护并发文章,博客和项目的链接博客:
http://concurrency.tumblr.com
我通常每天在各种环境(Erlang,Java,Scala,.NET,C ++,Ruby,Python等)中的各种主题(线程,actor,锁定,并行编程)上每天发布一两个链接。
回答
CPU制造商的网站上有一些有趣的内容:
http://developer.amd.com/documentation/articles/Pages/default.aspx#parallel
http://software.intel.com/zh-CN/multi-core
另外,英特尔的开源线程库也提供了一些很好的参考:
http://www.threadingbuildingblocks.org/
回答
它是特定于Delphi的,但没有理由不将该概念应用于任何其他语言!
多线程教程
回答
我在博客上撰写了有关C ++中的多线程和并发的文章。我也在写一本有关C ++并发性的书:《 C ++并发性》。
回答
如果我们使用C#,请参阅Gaston C. Hillar Packt出版的《 C2008和2005线程编程》一书,网址为http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded -programming / book,将为我们提供帮助。
强烈建议C程序员使用,因为我们可以下载带有有趣代码示例的代码,这些示例可以利用多核计算机。
这本书是一本不错的指南,其中包含许多要练习的代码。它在讲故事的同时解释了最困难的概念。