There has been considerable interest in Software Transactional Memory in recent years. The reason for rise in STM is due to rise of multicore computers. To fully utlize 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 how closed nesting can be achieved with Software Transactional Memory. I will talk about correctness requirements of Closed Nested executions. I will then describe correctness criteia that we developed and then describe about an implementation based on them.