在过去的一年里,我一直在Java中的并发性方面做了大量的工作,并且构建并处理了许多并发包。因此,就并行世界的发展而言,我很有信心。此外,我非常有兴趣学习和理解更多关于并发编程的知识。
但我无法回答自己下一步怎么办?为了继承更多与多核处理相关的技能,我还应该学习或工作什么?如果有什么好书(阅读和享受“实际并发性”和“java并发编程”),或者与多核处理相关的资源,那么我可以进入下一个层次吗?
发布于 2011-09-14 20:19:48
D语言为并发编程提供了两种范例,这两种模式都有其用途,而且非常有趣。
std.concurrency提供没有默认内存共享的消息传递。默认情况下,D中的所有全局和静态变量都是线程本地的,spawn和send不允许发送包含可变指针间接的消息。有限的共享可以通过shared关键字获得,这需要由类型系统进行额外的检查。在该语言的安全方言之外,您可以使用__gshared关键字强制使用经典的C/Java风格的全局/共享变量,但在种族安全方面,所有的赌注都会被取消。这个模型在的书“D编程语言”的自由章节.中有详细的描述。
std.parallelism不太安全,但在某些方面比std.concurrency更灵活,并且专门面向多核数据和任务并行,以提高数据处理吞吐量,而不是通用情况并发。它的特点是并行foreach循环、异步函数调用、并行缩减等。它提供了一些机制,使编写种族安全代码变得更容易,但这样做仍然需要一定程度的纪律。
关于D中两种主要多线程范式的更深入的讨论可以在我最近关于这个问题的文章。中找到
发布于 2011-11-25 09:11:56
我强烈建议你去看看克洛尔
并发的方法非常新颖,在我看来,这是在Java和大多数其他语言中看到的一个重大进步。一些要点:
我建议看这段视频作为一个游戏
发布于 2011-09-13 16:38:43
看看Scala语言,它扩展了Java并在JVM上运行。它从Erlang借用了"Actors“的概念,并提供了处理并发故障的良好能力。
https://softwareengineering.stackexchange.com/questions/107929
复制相似问题