최근에 STM (소프트웨어 트랜잭션 메모리) 프레임 워크 및 언어 확장에 대한 관심이 증가한 것으로 보입니다. 특히 Clojure은 롤링 커밋 로그가 아닌 MVCC (multi-version concurrency control)을 사용하는 우수한 구현을 가지고 있습니다. GHC Haskell은 또한 거래 구성을 허용하는 an extremely elegant STM monad을 보유하고 있습니다. 마지막으로, 혼자만의 경적을 울리기 위해 최근 참조 제한을 정적으로 적용하는 STM framework for Scala을 구현했습니다.소프트웨어 트랜잭션 메모리를 사용한 실제 경험?
이 모든 것들은 흥미로운 실험이지만, 그것만이 그 구체에만 국한되어있는 것처럼 보입니다 (실험). 그래서 제 질문은 : 실제 세계에서 STM을 보았거나 사용 했나요? 그렇다면 왜? 어떤 종류의 이익을 가져 왔습니까? 실적은 어떻습니까? (이 점에 대해 많은 상충되는 정보가있는 것 같습니다.) STM을 다시 사용 하시겠습니까? 아니면 배우와 같은 다른 동시성 추상화를 사용 하시겠습니까?
클로저 목록에서이 질문을하면 많은 반응을 얻게됩니다. Richie Hickey가 필요로하는 것에 의해 clojure가 구동되고 STM 지원은 실험이 아니라 필요하기 때문에 거기에 있다고 믿습니다. –
오, 그럴 것이라고 확신합니다! 그러나 Clojure-land 밖에서 STM을 사용하는 것에 더 관심이있었습니다. 어쨌든 새로운 아이디어는 아니며 유용하다고 생각하는 사람 *이 있어야합니다. –
부수적으로, Microsoft에서 .NET의 STM에 대한 지속적인 실험이 진행되고있는 것 같습니다. 이미 작업 구현을 릴리스하기에 충분합니다. http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx - 이제는이 작업이 재미로 진행되고 있는지, 그리고 .NET과의 통합은 확실히 실용적인 각도를 분명히 제시합니다. 그리고이 기술이 성숙한 단일 기술로 진지하게 고려되고 있다고 생각합니다. "생산". –