我试图找出Clojure所谓的STM和在Haskell中实现的STM之间的区别。把实际的语言语义差异放在一边,我有点困惑,因为Rich Hickey在他的演讲中说,Clojure的STM实现与其他任何东西都非常不同,但除了语言选择之外,我不理解这些差异。
发布于 2010-12-30 16:46:03
Clojure STM有3个独特的特性:
发布于 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)
发布于 2010-12-30 23:39:50
Mark Volkmann在Strange Loop 2009上对STM做了一个非常详细的介绍(特别是Clojure的STM),你可以在here上找到它(文章和幻灯片here)。我真的不知道任何其他资源(除了代码)来理解Clojure的STM是如何工作的。
https://stackoverflow.com/questions/4560605
复制相似问题