Clojure STM 属于哪一类事务模型?

What category of Transactional Model does the Clojure STM fall into?

我熟悉Database transactions, and spent lots of timing tuning isolation levels。我从未在代码中实现过自己的事务模型。

我已通读 the source code Clojure 事务实现 - 并试图了解其背后的模型。

我正在通读 a description of a Software Transactional Memory in hardware 实施,这促使我认为必须有 'categories' 事务模型。

我的问题是:Clojure STM 属于事务模型的哪一类?

Mark Volkmann's article about Clojure's STM 是有关该主题的绝佳信息来源 – 如果您对该主题感兴趣,我强烈建议您阅读它,无论您是在寻求高级设计概述还是底层实现细节的描述。

总结一下,Clojure的STM的事务模型是基于MVCC和快照隔离的。它有一些特殊的特征(例如the way in which it interacts with threads),但总的来说这个描述应该给你正确的想法。