Channels ▼


Draft Spec of Transactional Language Constructs for C++ Released

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.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.