  Software Transactional memory (STM) is an emerging abstraction for concurrent
programming alternative to lock-based synchronizations. Most STM models admit
only isolated transactions, which are not adequate in multithreaded programming
where transactions need to interact via shared data before committing. To
overcome this limitation, in this paper we present Open Transactional Memory
(OTM), a programming abstraction supporting safe, data-driven interactions
between composable memory transactions. This is achieved by relaxing isolation
between transactions, still ensuring atomicity. This model allows for
loosely-coupled interactions since transaction merging is driven only by
accesses to shared data, with no need to specify participants beforehand.
