Похоже, что в последнее время наблюдается повышенный интерес к платформам STM (программной транзакционной памяти) и языковым расширениям. Clojure, в частности, имеет отличную реализацию, в которой используется MVCC (multi-version concurrency), а не скользящий журнал фиксации. GHC Haskell также имеет чрезвычайно элегантную монаду STM, которая также позволяет создавать композиции. Наконец, чтобы немного упустить собственный рожок, я недавно реализовал структуру STM для Scala, которая статически применяет ссылочные ограничения.
Все это интересные эксперименты, но они, кажется, ограничиваются только этой сферой (эксперименты). Поэтому мой вопрос: кто-нибудь из вас видел или использовал STM в реальном мире? Если да, то почему? Какие выгоды он принес? Как насчет производительности? (на данный момент, похоже, имеется много противоречивой информации). Вы бы снова использовали STM или предпочли бы использовать некоторые другие абстракции concurrency как актеры?