首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala中Clojure的并发原语的真正替代

Scala中Clojure的并发原语的真正替代
EN

Stack Overflow用户
提问于 2013-11-16 11:05:49
回答 1查看 517关注 0票数 4

在Clojure中,我有四个原语来管理并发场景。

  1. 参考文献-管理对共享状态的协调的同步更改。
  2. 原子-管理对共享状态的不协调的同步更改。
  3. 代理-管理对共享状态的异步更改
  4. Vars .管理线程-本地状态

我的问题是-在Scala中是否有一个成熟的等价物?

假设-我将假设:

  • 演员是解决代理人所做的问题的另一种方式,但他们并不是替代者。
  • 我知道Scala中有代理库-我很想知道它们是否被认为是成熟的
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-16 17:38:58

因为这一点,您列出的Clojure are based in software transactional memory.的大多数并发结构基本上只是询问Scala中对STM的支持。根据Akka documentation,Scala中STM的最佳选择是ScalaSTM,他们说将来的某个时候它实际上将被包含在Standard中。

ScalaSTM支持代理和参考(我认为这实际上是基于Clojure版本的)。我认为原子的必然结果是Ref.single类型,它只是一个引用,您可以在atomic块之外使用它。

根据您的用例,var的一个很好的替代物将是Java的ThreadLocal或Scala的DynamicVariable。如果您只需要线程本地数据,但是如果您实际上需要动态绑定,那么我认为您需要ThreadLocal

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

https://stackoverflow.com/questions/20017650

复制
相关文章

相似问题

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