A New Paradigm for Concurrent Programming
Transactions let developers indicate that code sections must execute atomically-that is, as if they were run in isolation from the rest of the code. Transactional memory is a speculative execution mechanism in which accesses to shared objects can run simultaneously. In case of conflicting accesses, detected at runtime, one or several transactions might have to roll back and restart their execution. In other words, transactions execute optimistically in parallel and, as long as conflicts are rare, the performance gains resulting from the higher concurrency dominate the overheads introduced by transactional execution.