Communicating Memory Transactions
Many concurrent programming models enable both transactional memory and message passing. For such models, researchers have built increasingly efficient implementations and defined reasonable correctness criteria, while it remains an open problem to obtain the best of both worlds. The authors present a programming model that is the first to have opaque transactions, safe asynchronous message passing, and an efficient implementation. The semantics uses tentative message passing and keeps track of dependencies to enable undo of message passing in case a transaction aborts. They can program communication idioms such as barrier and rendezvous that do not deadlock when used in an atomic block.