Software Transactional Memory - Proposed Language Support

Proposed Language Support

The conceptual simplicity of STMs enables them to be exposed to the programmer using relatively simple language syntax. Tim Harris and Keir Fraser's "Language Support for Lightweight Transactions" proposed the idea of using the classical conditional critical region (CCR) to represent transactions. In its simplest form, this is just an "atomic block", a block of code which logically occurs at a single instant:

// Insert a node into a doubly linked list atomically atomic { newNode->prev = node; newNode->next = node->next; node->next->prev = newNode; node->next = newNode; }

When the end of the block is reached, the transaction is committed if possible, or else aborted and retried. CCRs also permit a guard condition, which enables a transaction to wait until it has work to do:

atomic (queueSize > 0) { remove item from queue and use it }

If the condition is not satisfied, the transaction manager will wait until another transaction has made a commit that affects the condition before retrying. This loose coupling between producers and consumers enhances modularity compared to explicit signaling between threads. "Composable Memory Transactions" took this a step farther with its retry command (discussed above), which can, at any time, abort the transaction and wait until some value previously read by the transaction is modified before retrying. For example:

atomic { if (queueSize > 0) { remove item from queue and use it } else { retry } }

This ability to retry dynamically late in the transaction simplifies the programming model and opens up new possibilities.

One issue is how exceptions behave when they propagate outside of transactions. In "Composable Memory Transactions", the authors decided that this should abort the transaction, since exceptions normally indicate unexpected errors in Concurrent Haskell, but that the exception could retain information allocated by and read during the transaction for diagnostic purposes. They stress that other design decisions may be reasonable in other settings.

Read more about this topic:  Software Transactional Memory

Famous quotes containing the words proposed, language and/or support:

    The proposed Constitution ... is, in strictness, neither a national nor a federal constitution; but a composition of both.
    James Madison (1751–1836)

    Play for young children is not recreation activity,... It is not leisure-time activity nor escape activity.... Play is thinking time for young children. It is language time. Problem-solving time. It is memory time, planning time, investigating time. It is organization-of-ideas time, when the young child uses his mind and body and his social skills and all his powers in response to the stimuli he has met.
    James L. Hymes, Jr. (20th century)

    She isn’t harassed. She’s busy, and it’s glamorous to be busy. Indeed, the image of the on- the-go working mother is very like the glamorous image of the busy top executive. The scarcity of the working mother’s time seems like the scarcity of the top executive’s time.... The analogy between the busy working mother and the busy top executive obscures the wage gap between them at work, and their different amounts of backstage support at home.
    Arlie Hochschild (20th century)