在Clojure,Haskell(和其他语言)中使用哪些算法用于STM?

Jay*_*Jay 13 concurrency haskell transactional-memory clojure stm

据我所知,实现软件事务内存有几种不同的算法(这是一个非常活跃的研究领域).我在哪里可以找到(不必深入研究源代码)在不同语言和库中使用,特别是在Clojure和Haskell(GHC)中?

Mic*_*zyk 16

除了代码本身之外,Clojure STM的最终资源是Mark Volkmann撰写的软件事务内存文章.

它简要概述了STM-the-approach(与其他并发方法相比),总结了Clojure中可用的各种并发功能,然后深入了解Clojure的STM,准确描述了事务中发生的事情并最终向下发生达到所涉及的各个班级的水平.除了提供有关Clojure STM机器内部工作的大量硬信息之外,它还包含大量非常有见地的评论,这些评论与Clojure的并发特性相关,因为它们用于惯用的Clojure程序.

Mark的STM资源的实际入口点是此页面,除了指向主要STM文章的最新版本的链接之外,目前还有一些STM幻灯片.


Jör*_*tag 6

在很高的层次上,Clojure实现STM的一个有趣之处在于它与所有其他实现非常不同.与关于假设性STM的学术论文相比,Rich更多地关注实际的真实世界高性能数据库.例如,据我所知,Clojure的STM是唯一使用多版本并发控制(MVCC)的STM,这是数据库世界中一种众所周知的技术(事实上,那里几乎没有严重的数据库,而不是使用MVCC)但在STM世界中根本没有讨论过.

  • 此时,各种STM算法/实现之间仍然没有很好的比较.所以是的,它们非常独特.我们可以谈论哪种语义最自然.但是,除了效率方面,MVCC比其他任何实施技术更好/更差之外,我们没有基础.我们*可以*注意MVCC暴露了写偏斜的可能性,哪些实现保留了真正可序列化的语义.(虽然有办法对付这个). (4认同)

Raf*_*ler 5

有关Haskell(和GHC)的信息,请参见http://www.haskell.org/haskellwiki/Software_transactional_memory,有关Clojure的信息,请参见http://clojure.org/concurrent_programming.

我相信GHC带有一个STM库,在Clojure中有一些STM技术.

有关其他语言,请参阅http://en.wikipedia.org/wiki/Software_transactional_memory#Implementations