【发布时间】:2026-02-16 23:15:01
【问题描述】:
似乎最近人们对 STM(软件事务内存)框架和语言扩展的兴趣越来越高。 Clojure 尤其具有出色的实现,它使用 MVCC (multi-version concurrency control) 而不是滚动提交日志。 GHC Haskell 也有an extremely elegant STM monad,它也允许交易组合。最后,为了稍微吹嘘一下我自己的号角,我最近实现了一个STM framework for Scala,它静态地强制执行引用限制。
所有这些都是有趣的实验,但它们似乎仅限于那个领域(实验)。所以我的问题是:你们有没有人在现实世界中看到或使用过 STM?如果是这样,为什么?它带来了什么样的好处?性能呢? (在这一点上似乎有很多相互矛盾的信息)您会再次使用 STM 还是更喜欢使用其他一些并发抽象,例如 actor?
【问题讨论】:
-
如果你在clojure列表上问这个,你会得到很多回应。我相信 clojure 是由 Rich Hickey 实际拥有的需求驱动的,它对 STM 的支持是因为他需要它,而不是作为实验。
-
哦,我相信我会的!但我对 STM 在 Clojure 领域之外的用途更感兴趣。毕竟,这不是一个新想法,应该有有人觉得它有用。
-
作为旁注,微软似乎在 .NET 中对 STM 进行了一些正在进行的实验 - 足以发布一个有效的实现:msdn.microsoft.com/en-us/devlabs/ee334183.aspx - 现在我怀疑这是否正在完成只是为了好玩,与 .NET 集成肯定引入了一个非常实用的角度,我倾向于将这甚至被认真考虑为一项成熟到足以“生产”的技术。
-
微软的实验以失败告终。 infoq.com/news/2010/05/STM-Dropped
标签: scala haskell clojure language-agnostic stm