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

时间:2010-11-27 17:19:53

标签: haskell concurrency clojure transactional-memory

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

3 个答案:

答案 0 :(得分:16)

Clojure STM的最终资源 - 除了代码本身 - 是Mark Volkmann撰写的Software Transactional Memory文章。

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

Mark的STM资源的实际入口点为this page,除了指向主STM文章最新版本的链接外,目前还有一些STM幻灯片。

答案 1 :(得分:6)

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

答案 2 :(得分:5)

请参阅http://www.haskell.org/haskellwiki/Software_transactional_memory了解Haskell(和GHC),http://clojure.org/concurrent_programming了解Clojure。

我相信GHC附带了一个STM库,并且在Clojure中有一些STM技术。

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