首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clojure STM与Haskell STM有何不同?

Clojure STM与Haskell STM有何不同?
EN

Stack Overflow用户
提问于 2010-12-30 14:47:29
回答 3查看 3.4K关注 0票数 32

我试图找出Clojure所谓的STM和在Haskell中实现的STM之间的区别。把实际的语言语义差异放在一边,我有点困惑,因为Rich Hickey在他的演讲中说,Clojure的STM实现与其他任何东西都非常不同,但除了语言选择之外,我不理解这些差异。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-30 16:46:03

Clojure STM有3个独特的特性:

  1. 实现MVCC快照,避免事务在读写时重新启动读写时的invalidation.
  2. Ensures引用提供了一种对资源获取顺序的手动控制。
  3. 具有显式的通信,可减少交换写入的重试次数。
票数 26
EN

Stack Overflow用户

发布于 2010-12-31 10:23:08

有关Haskell STM,请参阅SPJ的论文:http://research.microsoft.com/en-us/um/people/simonpj/papers/stm/

特别使用的是"Composable memory transactions“和”transactions with data invariants“。GHC的STM实现确实不是MVCC。我不记得所有的实现细节,但我的理解是,论文中的描述与目前GHC中的描述并没有太大不同。

(请注意,在clojure或其他地方,MVCC使得写偏差成为可能--例如,请参阅此处:http://en.wikipedia.org/wiki/Snapshot_isolation)

票数 17
EN

Stack Overflow用户

发布于 2010-12-30 23:39:50

Mark Volkmann在Strange Loop 2009上对STM做了一个非常详细的介绍(特别是Clojure的STM),你可以在here上找到它(文章和幻灯片here)。我真的不知道任何其他资源(除了代码)来理解Clojure的STM是如何工作的。

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

https://stackoverflow.com/questions/4560605

复制
相关文章

相似问题

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