Answers:
这些是我最近发现有用的书:
实践中的Java并发 -许多Java并发工具的作者。Java特有的,但是关于线程的危险和陷阱的信息非常清楚和有用。
并发的艺术 -并不是标题所暗示的令人眼花theoretical乱的理论论文,实际上是相当有用和忠实的实用建议和示例的简明汇编。
JVM上的编程并发性 -这实际上是一本引人入胜的理论论文,但是非常非常易读和有见地。如果您需要了解STM或参与者是什么,他们的优缺点是什么以及为什么,本书将告诉您。
有许多专用的实用程序库,例如英特尔线程构建模块或Apple的Grand Central Station-它们通常都有自己的专用手册,这些手册通常都很好,并且如果您想对它们做一些大事,无论如何都是必读的。
我发现Joe Albahari提供的这个免费线程资源非常出色...
它倾向于C#,但是这些概念完全适用于其他语言。他还提供了英语和其他几种语言的PDF格式的教程。由于示例代码,代码的逐步说明以及示例附带的出色序列图和状态图的结合,我会推荐它。
本教程分为五个部分:
它可以以本书的形式在此处获得:简而言之的C#4.0(第23和24章)
并发模型很多,因此在决定选择哪种模型之前,最好对所有模型都有一个好主意。为此,我推荐《七周之内的七个并发模型:线程解开》一书。查看评论和目录,您会发现为什么这是一本好书。这也是最近(2014年)。
现在,C ++标准中提供了线程工具。因此,如果您想学习C ++,我建议您在阅读常规线程教程之前先阅读一下有关新语言功能的简单回顾。然后返回并稍后更详细地查看标准。
在实践中,线程化是大多数人认为但不理解的事情之一。我参加了一个静态分析研究人员的演讲,该研究人员在IBM研究数据库(Java),Linux文件系统(C)和其他一些引人注目的项目中确定了竞争条件。其中一些项目是由并发和线程方面的著名专家编写的。请注意,编写线程安全的代码很困难,并且知识鸿沟并不是唯一认识到它的人的。
尽管它不能直接帮助您进行游戏编程,但我还是建议您看一些MPI教程(对不起,没有具体建议)。用线程编写正确的并发代码似乎很困难,但通过消息传递似乎很容易。间接地,希望是探索不同的并发模型将有助于您自己的思维过程,从而将代码结构化为线程安全的。
要了解并发,请使用专为并发设计的语言。Golang是一个不错的选择,因为它内置了对并发的支持以及类似于C的语法,这使得大多数程序员都易于学习该语言。
它具有消息传递,互斥锁等功能,可以满足您几乎所有的并发需求,并且在其他语言中具有更复杂的等效项。
例如,a
使用C中的MPI 从另一个线程将int接收到变量中:
MPI_Recv(&a, 1, MPI_INT, 0, 0, MPI_COMM_WORLD,MPI_STATUS_IGNORE);
在go中从另一个(用户)线程接收一个int到变量a中:
a := <-c
要在实践中学习go语言,请查看go tour,您可以在其中浏览器中编写,编译和运行go代码。
跳至并发部分
http://tour.golang.org/concurrency/1
我的前教授为CS一年级学生开设了一个非常受欢迎的短期课程,主题是并发。为了快速而全面地了解并发,我绝对建议阅读此内容。