似乎最近对 STM(软件事务内存)框架和语言扩展的兴趣越来越大。 Clojure尤其具有出色的实现,它使用MVCC(多版本并发控制)而不是滚动提交日志。GHC Haskell 还有一个非常优雅的 STM monad,它也允许事务组合。最后,为了稍微吹嘘一下我自己的号角,我最近为 Scala 实现了一个 STM 框架,它静态地强制执行引用限制。
所有这些都是有趣的实验,但它们似乎仅限于那个领域(实验)。所以我的问题是:你们有没有人在现实世界中看到或使用过 STM?如果是这样,为什么?它带来了什么样的好处?性能呢?(在这一点上似乎有很多相互矛盾的信息)你会再次使用 STM 还是更喜欢使用其他一些并发抽象,比如演员?