The advent of multi-core processors has renewed interest in the idea of incorporating transactions into the programming model used to write multi-threaded programs. However, using lock based multi-threaded programming is hard to get right and easy to deadlock. Transactional Memory (TM) simplifies multi-threaded programming, by replacing use of locks with transactions. But, there are many proble...