Nested pessimistic transactions for both atomicity and synchronization in concurrent software