Suresh Jagannathan, Purdue University
Deconstructing Transactional Semantics for Fun and Profit
The advent of multicore architectures has led to renewed interest in the development of new programming language abstractions for expressing concurrent computations. Software transactional memory (STM) is one important example because it facilitates high-level reasoning about a concurrent program's behavior, i.e., as a sequence of serializable atomic actions.
In this talk, we consider different (semantic) components that comprise an STM implementation, and explore how these individual pieces can be leveraged to provide additional expressivity, performance, and safety of concurrent programs.
We consider three specific examples: (a) safe futures, a simple annotation that enables deterministic parallelism by strengthening the serializability constraints that underlie transactional abstractions by enforcing a specific ordering on thread executions; (b) stabilizers, a linguistic mechanism for expressing safe multi-threaded checkpoints, derived from techniques used in optimistic transactional implementations to safely recover state; and (c) isolates, an event combinator that enforces isolation of concurrently executing actions in message-passing systems -- isolates permit the expression of transactions whose scope are dynamically determined based on the communication actions they encapsulate.
While these examples are superfically disparate, their development is inspired by specific features found in modern software transaction designs.