A transactional memory programming interface allows a thread to directly
and safely access one or more shared memory locations within a
transaction while maintaining control structures to manage memory
accesses to those same locations by one or more other concurrent threads.
Each memory location accessed by the thread is associated with an
enlistment record, and each thread maintains a transaction log of its
memory accesses. Within a transaction, a read operation is performed
directly on the memory location, and a write operation is attempted
directly on the memory location, as opposed to some intermediate buffer.
The thread can detect inconsistencies between the enlistment record of a
memory location and the thread's transaction log to determine whether the
memory accesses within the transaction are not reliable and the
transaction should be re-tried.