我试图找到Clojure所谓的STM与Haskell在STM中实现的内容之间的差异。除了真实的语言语义差异之外,我有点困惑,就像Rich Hickey在他的演讲中说,Clojure的STM实施与其他任何内容都大不相同,但是除了语言选择之外,我不明白差异。

有帮助吗?

解决方案

Clojure STM具有3个主要功能:

  1. 实现MVCC快照,避免在阅读无效的情况下重新启动交易。
  2. 确保对阅读写的参考提供对资源获取顺序的手动控制。
  3. 有明确的通勤,可减少在交换写作上的重试。

其他提示

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

特别用途的是“可综合存储器交易”和“具有数据不变性的交易记忆”。 GHC对STM的实施确实不是MVCC。我不记得所有实施细节,但我的理解是,论文中的描述与GHC当前存在的描述并没有什么不同。

(请注意,MVCC,在Clojure或其他地方,使得写作可能 - 请参阅,例如,此处: http://en.wikipedia.org/wiki/snapshot_isolation)

马克·沃尔克曼(Mark Volkmann 这里 (文章和幻灯片 这里)。我真的不知道其他资源(除了代码外)是为了了解Clojure的STM的工作原理。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top