1. A method of controlling an atomic transaction having access to a shared memory, the method comprising: enlisting at least one non-memory resource manager; enlisting a memory resource manager configured to manage a transactional memory; calling a commit protocol configured to determine whether the non-memory and memory resource managers vote to commit the atomic transaction; committing the atomic transaction if the non-memory and memory resource managers vote to commit the atomic transaction; re-executing the atomic transaction if the memory resource manager does not vote to commit the atomic transaction; and aborting the atomic transaction if at least one of the non-memory resource managers does not vote to commit the atomic transaction and the memory resource manager votes to commit the atomic transaction, the memory resource manager votes to commit if no memory conflicts occurs during the atomic transaction.