据我所知,有几种不同的算法来实现软件事务内存(这是一个相当活跃的研究领域)。我在哪里可以找到(不必深入源代码)在不同语言和库中使用的代码,特别是在Clojure和Haskell (GHC)中?
发布于 2010-11-28 04:58:52
关于Clojure的STM的最终资源--除了代码本身--是Mark Volkmann的Software Transactional Memory文章。
它提供了STM方法的简要概述(与其他并发方法相比),总结了Clojure中可用的各种并发功能,然后深入Clojure的STM,准确地描述了在事务期间发生的事情,并最终深入到涉及的单个类的级别。除了提供大量关于Clojure的STM机制的内部工作原理的硬信息外,它还包含大量关于Clojure的面向并发的特性的非常有见地的评论,因为它们被用于惯用的Clojure程序中。
Mark的STM资源的实际入口点是this page,目前除了到主要STM文章的最新版本的链接外,还提供了一些STM幻灯片。
发布于 2010-11-28 06:07:31
在非常高的层次上,关于Clojure的STM实现,有趣的一件事是它与所有其他实现有很大的不同。Rich更多地关注真实世界的高性能数据库,而不是关于假设STM的学术论文。例如,据我所知,Clojure的STM是唯一使用多版本并发控制( Multi Version Concurrency Control,MVCC)的STM,MVCC是数据库世界中的一种众所周知的技术(实际上,几乎没有正式的数据库,它不使用MVCC),但在STM世界中几乎没有讨论过。
发布于 2010-11-28 01:26:51
参见用于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
https://stackoverflow.com/questions/4292866
复制相似问题