Correctness of Closed Nesting in Software Transactional Memory Systems
There has been considerable interest in Software Transactional Memory (STM) in recent years. The reason for the interest in STM systems is due to rise of multicore computers. To fully utilize the power of these machines, applications need to be able to harness the parallelism of the underlying hardware. This is commonly achieved using multi-threading. Yet writing correct and scalable multi-threaded programs is far from trivial. In multi-threaded programs sets of semantically related actions may need to execute in mutual exclusion to avoid semantic inconsistencies.
Traditionally, multi-threaded programs were developed in conjunction with locks to address these issues. But programming with locks has many disadvantages such as deadlocks, priority inversion etc. and makes it difficult to build scalable software systems. Importantly, lock based software components are difficult to compose i.e. build larger software systems using simpler software components. Composition of software components is a very important property which is the basis of modular programming. Nesting of transactions is a way of achieving Composition.
In this talk, I will explain about different forms of Nesting for Software Transactional Memory. I will talk about correctness requirements of Nested executions. I will then describe correctness criteria that we developed and then describe about an implementation based on them.