Patent ID: 7904668

Claim:
A computer-implemented method, comprising: determining that: at least one of a plurality of shared memory locations to be read during processing a software transaction is not known in advance of said processing; and each one of the plurality of shared memory locations to be written during said processing the software transaction is known in advance of said processing; wherein each of the plurality of shared memory locations is associated with respective version value that is updated, based on a value of a version clock shared by the plurality of shared memory locations, when the shared memory locations is modified; in response to said determining: obtaining a current value of the version clock; and locking each one of the plurality of shared memory locations that is to be written during said processing the software transaction; and in response to said obtaining and said locking: performing said processing the transaction to discover which of the plurality of shared memory locations is to be read during said processing the software transaction; verifying that each one of the plurality of shared memory locations to be read during said processing the software transactions has not been modified since said obtaining; and in response to said verifying, attempting to commit the software transaction, wherein said attempting comprises updating both: the values stored in each of the plurality of shared memory locations to be written during said processing the software transaction; and the respective version value associated with the shared memory location storing the updated value.