ソフトウェアトランザクショナルメモリ
STM は概念的に単純なため、プログラマは比較的単純な文法で STM を使うことができる。Tim Harris と Keir Fraser は論文"Language Support for Lightweight Transactions"で、古典的な「条件つき排他領域」(conditional critical region, CCR) を使ってトランザクションを表現するアイデアを提示した。CCR の最も単純な形式は、「アトミック・ブロック」というものである。これは論理的には"一瞬"に実行されるコードブロックと考えることができる。
ブロックの最後に到達すると、トランザクションは可能ならコミットし、さもなくばアボートして再実行(リトライ)される。CCR はまたガード条件を設定することを許しており、するべき仕事が生じるまでトランザクションを待たせることができる:
ガード条件が満たされていなければ、そのトランザクションは、ガード条件に影響を与えうるコミットが(他のトランザクションにより)なされるまで待たされ、その後再実行される。このように生産者と消費者の間の結びつきを弱くすることで、スレッド間で明示的にシグナルをやりとりする方法に比べてモジュール性が改善される。"Composable Memory Transactions" では、retryコマンドを導入してこれをさらに一歩押し進めている。