有哪些学习线程编程的好资源? [关闭]

Posted

技术标签:

【中文标题】有哪些学习线程编程的好资源? [关闭]【英文标题】:What are some good resources for learning threaded programming? [closed] 【发布时间】:2010-09-05 08:57:46 【问题描述】:

随着桌面上多核 CPU 的兴起,多线程技能将成为程序员的宝贵财富。您能为想要学习线程编程的程序员推荐一些好的资源(书籍、教程、网站等)吗?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

Joseph Albahari 在这里写了一篇很好的 C# 线程概述:

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

【讨论】:

这是一个很棒的主题教程。【参考方案3】:

老实说,我自己从未读过它,但Concurrent Programming in Java 是我听说过很多人推荐的一本书。

【讨论】:

【参考方案4】:

http://www.yoda.arachsys.com/csharp/threads/

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

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

作者的主页包含一个他写的list of articles,其中一些包含线程相关的东西。也许从那里开始,如果你喜欢他的风格,就买这本书。

【讨论】:

【参考方案7】:

对于 C#(或一般的 .NET)并发编程的出色指南和参考,我推荐 MSDN What Every Dev Must Know About Multithreaded Apps MSDN 上的 Vance Morrison 文章。它包含大量关于多线程开发的最佳实践信息和注意事项

【讨论】:

【参考方案8】:

我为并发文章、博客和项目维护了一个链接博客:

http://concurrency.tumblr.com

我通常每天发布一个或两个关于各种环境(Erlang、Java、Scala、.NET、C++、Ruby、Python 等)中各种主题(线程、参与者、锁定、并行编程)的链接.

【讨论】:

【参考方案9】:

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

Multi Threading Tutorial

【讨论】:

【参考方案10】:

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

这是对情况的一个很好的总体概述,如果您正在寻找教程和书籍,最好指定一种语言作为起点,这样您就可以弄乱一些代码。

【讨论】:

【参考方案11】:

Erlang 编程语言提供了一种易于使用的并发编程风格。你可能永远不会真正使用 Erlang,但这些概念可以移植到其他语言。您可能想阅读 Programming Erlang: Software for a Concurrent World 一书。

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

【讨论】:

【参考方案12】:

我不知道您到底在寻找什么,但如果您正在做 WindowsForms 开发,那么下面的博客文章值得每一分钟阅读: WinForms UI Thread Invokes: An In-Depth Review of Invoke/BeginInvoke/InvokeRequred

【讨论】:

【参考方案13】:

我认为 Boost.Threads 是一个非常值得学习的 C++ 并发库,特别是如果您只是想开始编写多线程应用程序。代码非常简洁易懂,而且下一个 C++ 标准可能会包含一个基于 Boost.Threads 的线程库(教程:http://www.ddj.com/cpp/184401518)

【讨论】:

【参考方案14】:

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

参与者已提交多种不同语言的解决方案,performance results 已发布。最初的项目现已完成,现在有 wide finder 2 接手工作。

CodingHorror 有一个很好的introduction to wide finder。

【讨论】:

【参考方案15】:

对于该主题的丰富、透彻的处理,在计算机科学和实践之间取得良好的平衡,我推荐The Art of Multiprocessor Programming。很多示例都是在面向对象的代码中,即 Java,以及其他语言分散在各处。这仅取决于所涵盖的主题。我真正喜欢这本书的地方在于它讨论了如何在并发设计中实现通用算法。当然,还有更多!

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

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

另外,不要错过教父的博客:Herb Sutter 的 Sutter's Mill。他在 Dobb 博士的期刊等中提供了指向他所有文章的链接。点击他的Concurrency category。

【讨论】:

【参考方案16】:

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

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

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

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

http://www.threadingbuildingblocks.org/

【讨论】:

【参考方案17】:

如果您使用 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# 程序员,因为您可以下载带有利用您的多核计算机的有趣示例的代码。 这本书是一本很好的指南,有很多代码可以练习。它一边讲故事,一边解释最困难的概念。

【讨论】:

我对这本书的建议持严重保留意见。有关详细信息,请参阅我的完整评论:msmvps.com/blogs/jon_skeet/archive/2009/03/16/…

以上是关于有哪些学习线程编程的好资源? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

何时在 C# 中使用线程池? [关闭]

python学习_day36_并发编程之多线程1

带你学习多线程编程

C# winForm Socket 多线程 编程 关闭问题

尚硅谷JUC高并发编程学习笔记线程通信与集合线程安全

尚硅谷JUC高并发编程学习笔记线程通信与集合线程安全