A system for implementing synchronized objects for software transactional
memory may include one or more processors and a memory storing program
instructions executable by the processor to implement a
transactional-memory manager configured to coordinate memory access
requests directed at the memory from a plurality of transactions. The
transactional-memory manager records, within a collaborator record for a
shared data object in the memory, identifications of a set of two or more
transactions that have requested synchronization on the object. In
response to a commit request from a given transaction of the set, the
transactional-memory manager determines whether to commit or abort the
given transaction based at least in part on the transactional states of
other transactions in the set, examining the collaborator record to
identify the other transactions.