Locks are used to synchronize concurrent access to shared data. However, lock-based synchronization for concurrent programming is difficult to write and can lead to problems such as deadlocks or priority inversion. As an alternate concurrency control mechanism, transactional memory has been proposed; it eliminates many of the pitfalls of lock-based programming but its overhead prohibits runtime performance.
This thesis presents permission-based optimizations for efficient software transactional memory. The main technical contribution is access permissions that combine concurrency control information and object aliasing. In this approach, concurrency control intent is expressed through annotations based on access permissions. Our translation mechanism then tracks permissions through method implementations and optimizes transactional memory. Our results show that this technique increases the performance of transactional memory.