The Transactional Memory Specification Drafting Group, made up in part by representatives from Intel, IBM, and Sun, has released the first version of the Draft Specification of Transactional Language Constructs for C++.

This specification introduces transactional language constructs for C++, which are intended to make concurrent programming easier by allowing programmers to express compound statements that do not interact with other threads, without specifying the synchronization that is required to achieve this.

This specification builds on the upcoming C++0x specification. As such, the constructs described in this specification have well-defined behavior only for programs with no data races. This specification specifies how the transactional constructs contribute to determining whether a program has a data race.

The __transaction keyword can be used to indicate that a compound statement should execute as an atomic transaction; that is, the compound statement does not observe changes made by other threads during its execution, and other threads do not observe its partial results before it completes. Furthermore, the compound statement takes effect in its entirety if it takes effect at all. Thus, programmers can think of an atomic transaction statement as taking effect "instantaneously", which greatly simplifies reasoning about interactions between concurrent threads. Two additional syntactic features allow the programmer to specify expressions and functions that should execute as atomic transactions.

For details, see the draft here.