Transactions in Fortress
Transactional memory was proposed as a programming language feature by Maurice Herlihy and Eliot Moss in 1993. In modern processors the implementation overhead is not large, and transactions solve several performance and correctness problems often associated with locking. Locking tends to introduce a tension between correctness (conservatively ensured by reducing parallelism) and performance (harmed by reduced parallelism) and deadlock (caused when locks are not always obtained in the same order in different threads); properly-implemented transactions provide all three (though performance inevitably suffers when true contention is high).
Fortress uses DSTM2 (pdf) to implement its transactions; in the future, when hardware support is more mature, we expect to use hybrid transactional memory.
