Address level synchronization of shared data
First Claim
Patent Images
1. A computer-implemented method, comprising:
- two or more of a plurality of threads executing on one or more processors concurrently accessing a shared data object during a data access session, wherein a data access session comprises a set of access operations performed on the shared data object by a given one of the two or more threads that has acquired master status during the period of time in which the given one of the two or more threads acts as a master thread with respect to access operations targeting the shared data object, and wherein the given one of the two or more threads acts as the master thread for the duration of the data access session;
wherein concurrently accessing the shared data object during the data access session comprises;
the given one of the two or more threads performing one or more data modifications on a first version of the shared data object;
the given one of the two or more threads performing one or more data modifications of a thread of the two or more threads other than the given one of the two or more threads that target the shared data object on the first version of the shared data object; and
a thread of the two or more threads other than the given one of the two or more threads performing one or more read accesses that target the shared data object in a non-blocking manner on a second version of the shared data object;
wherein the method further comprises;
the given one of the two or more threads ending the data access session; and
the given one of the two or more threads making the first version of the shared data object and the second version of the shared data object identical.
2 Assignments
0 Petitions
Accused Products
Abstract
From among a plurality of threads accessing a shared data object, one thread acquires a “master” status to arbitrate among the requests of competing threads during a given session of data access to the shared data object. During the session, the master thread resolves any conflicts resulting from attempts to access or modify the shared data object by other threads, and only the master thread may apply modifications to the shared data object during the session. Meanwhile, during the session, non-master threads may perform non-blocking read operations on the shared data object. During a subsequent session, a different thread may acquire master status.
22 Citations
20 Claims
-
1. A computer-implemented method, comprising:
-
two or more of a plurality of threads executing on one or more processors concurrently accessing a shared data object during a data access session, wherein a data access session comprises a set of access operations performed on the shared data object by a given one of the two or more threads that has acquired master status during the period of time in which the given one of the two or more threads acts as a master thread with respect to access operations targeting the shared data object, and wherein the given one of the two or more threads acts as the master thread for the duration of the data access session; wherein concurrently accessing the shared data object during the data access session comprises; the given one of the two or more threads performing one or more data modifications on a first version of the shared data object; the given one of the two or more threads performing one or more data modifications of a thread of the two or more threads other than the given one of the two or more threads that target the shared data object on the first version of the shared data object; and a thread of the two or more threads other than the given one of the two or more threads performing one or more read accesses that target the shared data object in a non-blocking manner on a second version of the shared data object; wherein the method further comprises; the given one of the two or more threads ending the data access session; and the given one of the two or more threads making the first version of the shared data object and the second version of the shared data object identical. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A system, comprising:
-
a processor; and memory coupled to the processor, wherein the memory stores program instructions executable by the processor to cause the processor to perform; two or more of a plurality of threads concurrently access a shared data object during a data access session, wherein a data access session comprises a set of access operations performed on the shared data object by a given one of the two or more threads that has acquired master status during the period of time in which the given one of the two or more threads acts as a master thread with respect to access operations targeting the shared data object, and wherein the given one of the two or more threads acts as the master thread for the duration of the data access session; wherein concurrently accessing the shared data object during the data access session comprises; the given one of the two or more threads performing one or more data modifications on a first version of the shared data object; the given one of the two or more threads performing one or more data modifications of a thread of the two or more threads other than the given one of the two or more threads that target the shared data object on the first version of the shared data object; and a thread of the two or more threads other than the given one of the two or more threads performing one or more read accesses that target the shared data object in a non-blocking manner on a second version of the shared data object; wherein the program instructions are further executable by the processor to cause the processor to perform; the given one of the two or more threads ending the data access session; and the given one of the two or more threads making the first version of the shared data object and the second version of the shared data object identical. - View Dependent Claims (8)
-
-
9. A non-transitory computer readable storage medium storing program instructions that when executed on one or more computers cause the one or more computers to perform:
-
two or more of a plurality of threads concurrently accessing a shared data object during a data access session, wherein a data access session comprises a set of access operations performed on the shared data object by a given one of the two or more threads that has acquired master status during the period of time in which the given one of the two or more threads acts as a master thread with respect to access operations targeting the shared data object, and wherein the given one of the two or more threads acts as the master thread for the duration of the data access session; wherein concurrently accessing the shared data object during the data access session comprises; the given one of the two or more threads performing one or more data modifications on a first version of the shared data object; the given one of the two or more threads performing one or more data modifications of a thread of the two or more threads other than the given one of the two or more threads that target the shared data object on the first version of the shared data object; and a thread of the two or more threads other than the given one of the two or more threads performing one or more read accesses that target the shared data object in a non-blocking manner on a second version of the shared data object; wherein executing the program instructions on the one or more computers further causes the one or more computers perform; the given one of the two or more threads ending the data access session; and the given one of the two or more threads making the first version of the shared data object and the second version of the shared data object identical. - View Dependent Claims (10)
-
-
11. A computer-implemented method, comprising:
-
a plurality of threads executing on one or more processors concurrently accessing a shared data object during a data access session, wherein a data access session comprises a set of access operations performed on the shared data object by a given one of the plurality of threads that has acquired master thread status during the period of time in which the given one of the plurality of threads is a master thread with respect to access operations targeting the shared data object, wherein the given one of the threads is the master thread for the duration of the data access session; wherein, during the data access session, said accessing comprises; one or more of the threads performing read accesses on the shared data object in a non-blocking manner; the master thread performing one or more data modifications of a thread of the plurality of threads other than the master thread that target the shared data object; and the master thread determining if any read accesses are in conflict with any data modifications to the shared data object and resolving any conflicts; and during a subsequent session for accessing the shared data object, a given one of the plurality of threads other than the master thread becoming a master thread for the subsequent session. - View Dependent Claims (12, 13, 14)
-
-
15. A system, comprising:
-
a processor; and memory coupled to the processor, wherein the memory stores program instructions executable by the processor to cause the processor to perform; a plurality of threads accessing a shared data object during a data access session, wherein a data access session comprises a set of access operations performed on the shared data object by a given one of the plurality of threads designated as a master thread during the period of time in which the given one of the plurality of threads is designated as the master thread with respect to access operations targeting the shared data object, wherein the given one of the threads is designated as the master thread for the duration of the data access session; wherein said accessing the shared data object during the data access session comprises; one or more of the threads performing read accesses on the shared data object in a non-blocking manner; the given one of the threads designated as the master thread performing one or more data modifications of a thread other than the given one of the threads designated as the master thread that target the shared data object; and the given one of the threads designated as the master thread determining if any read accesses are in conflict with any data modifications to the shared data object and resolving any conflicts; and during a subsequent session for accessing the shared data object, a given one of the plurality of threads other than the given one of the threads designated as the master thread being designated as a master thread for the subsequent session. - View Dependent Claims (16, 17)
-
-
18. A non-transitory computer readable storage medium storing program instructions that when executed on one or more computers cause the one or more computers to perform:
-
a plurality of threads accessing a shared data object during a data access session, wherein a data access session comprises a set of access operations performed on the shared data object by a given one of the plurality of threads designated as a master thread during the period of time in which the given one of the plurality of threads acts is designated as a master thread with respect to access operations targeting the shared data object, and wherein the given one of the threads is designated as the master thread for the duration of the data access session; wherein said accessing the shared data object during the data access session comprises; one or more of the threads performing read accesses on the shared data object in a non-blocking manner; the given one of the threads designated as the master thread performing one or more data modifications of a thread other than the given one of the threads designated as the master thread that target the shared data object; and the given one of the threads designated as the master thread determining if any read accesses are in conflict with any data modifications to the shared data object and resolving any conflicts; and during a subsequent session for accessing the shared data object, a given one of the plurality of threads other than the given one of the threads designated as the master thread being designated as a master thread for the subsequent session. - View Dependent Claims (19, 20)
-
Specification