首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下一个并发

下一个并发
EN

Software Engineering用户
提问于 2011-09-13 15:28:44
回答 5查看 748关注 0票数 9

在过去的一年里,我一直在Java中的并发性方面做了大量的工作,并且构建并处理了许多并发包。因此,就并行世界的发展而言,我很有信心。此外,我非常有兴趣学习和理解更多关于并发编程的知识。

但我无法回答自己下一步怎么办?为了继承更多与多核处理相关的技能,我还应该学习或工作什么?如果有什么好书(阅读和享受“实际并发性”和“java并发编程”),或者与多核处理相关的资源,那么我可以进入下一个层次吗?

EN

回答 5

Software Engineering用户

发布于 2011-09-14 20:19:48

D语言为并发编程提供了两种范例,这两种模式都有其用途,而且非常有趣。

std.concurrency提供没有默认内存共享的消息传递。默认情况下,D中的所有全局和静态变量都是线程本地的,spawnsend不允许发送包含可变指针间接的消息。有限的共享可以通过shared关键字获得,这需要由类型系统进行额外的检查。在该语言的安全方言之外,您可以使用__gshared关键字强制使用经典的C/Java风格的全局/共享变量,但在种族安全方面,所有的赌注都会被取消。这个模型在的书“D编程语言”的自由章节.中有详细的描述。

std.parallelism不太安全,但在某些方面比std.concurrency更灵活,并且专门面向多核数据和任务并行,以提高数据处理吞吐量,而不是通用情况并发。它的特点是并行foreach循环、异步函数调用、并行缩减等。它提供了一些机制,使编写种族安全代码变得更容易,但这样做仍然需要一定程度的纪律。

关于D中两种主要多线程范式的更深入的讨论可以在我最近关于这个问题的文章。中找到

票数 2
EN

Software Engineering用户

发布于 2011-11-25 09:11:56

我强烈建议你去看看克洛尔

并发的方法非常新颖,在我看来,这是在Java和大多数其他语言中看到的一个重大进步。一些要点:

  • 标识和状态是分开的- OOP以可变成员变量的形式将对象标识与其当前状态完成。Clojure严格分离标识(托管引用)和状态(不可变的数据结构),从而极大地简化了可靠并发程序的开发。
  • 持久不变的数据结构--因为所有东西都是不可变的,所以您可以随时获取数据/状态的快照,并确保它不会在您的下面发生变化。但更好的是--它们是与以前版本共享数据的持久数据结构。因此,操作更接近O(1),而不是为不可变数据的复制写入策略付费的O(n)。
  • 软件事务内存-而不是使用锁,您只需将代码封装在(dosync .)块,它们将自动作为事务运行。没有死锁的风险,也不需要开发复杂的锁定策略。这是一个巨大的胜利,特别是当与上述不变的数据结构相结合时。有效地,Clojure在其STM中实现了多版本并发控制
  • 函数式编程范型使编写可靠的并发代码变得更加容易。基本上,如果您采用不变的数据结构,通过一个纯函数运行它,并输出不同的不可变数据结构,那么您的代码就保证了并发性的安全。

我建议看这段视频作为一个游戏

票数 2
EN

Software Engineering用户

发布于 2011-09-13 16:38:43

看看Scala语言,它扩展了Java并在JVM上运行。它从Erlang借用了"Actors“的概念,并提供了处理并发故障的良好能力。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/107929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档