Software Transactional Memory (STM.NET) is a mechanism for efficient isolation of shared state. The programmer demarcates a region of code as operating within a transaction that is “atomic” and “isolated” from other transacted code running concurrently.
Transactional memory is considered a promising technology by the academic community and is repeatedly brought up as a welcome technology for the upcoming wave of applications which scale on modern multi-core hardware. The goal is to be able to exploit concurrency by using components written by experts and consumed by application programmers who can then compose together these components using STM. Transactional memory provides an easy-to-use mechanism to do this safely.
STM is not a 1:1 lock replacement and provides more functionality than critical sections, reader-writer locks, and other traditional synchronization methods. This functionality has overhead; the hope is that the scalability, productivity, and deadlock freedom gained by this mechanism outweigh the degradation in serial performance.
This is an experimental release of the .NET Framework that allows C# programmers to try out this technology, specifically a particular implementation of STM. We are interested in your feedback on your experience using this programming model. Is it valuable and easy-to-use? Does it provide enough functionality? Are you willing to pay with serial performance losses to gain greater scalability? Our implementation is integrated with the framework and tools, it has been extended to provide coexistence with locks, interoperate with traditional transactional technologies, and safely work with existing code.