Clojure STM与Haskell STM有何不同?
-
14-10-2019 - |
题
我试图找到Clojure所谓的STM与Haskell在STM中实现的内容之间的差异。除了真实的语言语义差异之外,我有点困惑,就像Rich Hickey在他的演讲中说,Clojure的STM实施与其他任何内容都大不相同,但是除了语言选择之外,我不明白差异。
解决方案
Clojure STM具有3个主要功能:
- 实现MVCC快照,避免在阅读无效的情况下重新启动交易。
- 确保对阅读写的参考提供对资源获取顺序的手动控制。
- 有明确的通勤,可减少在交换写作上的重试。
其他提示
对于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)
不隶属于 StackOverflow