Acquisition of multiple synchronization objects within a computing device
First Claim
1. A method comprising:
- sequentially selecting, by a computing device, a plurality of requests from a request queue, wherein at least one request of the plurality of requests specifies a plurality of requested synchronization objects, the requested synchronization objects corresponding to different non-contiguous candidate portions dispersed in a data structure to which to apply operations, wherein each of the plurality of requested synchronization objects for each of the corresponding candidate portions must be acquired to apply the operations for the at least one request on the corresponding candidate portions of the data structure;
responsive to determining that a first subset of the plurality of requested synchronization objects has been previously acquired by the at least one request, querying, by the computing device, one or more sets of identifiers to determine whether a second subset of the plurality of requested synchronizations objects not previously acquired by the at least one request are acquirable, wherein each respective identifier of one or more sets of identifiers identifies a respective synchronization object of the plurality of requested synchronization objects;
acquiring, by the computing device, any of the second subset of the plurality of requested synchronization objects that are acquirable; and
responsive to acquiring all of the requested synchronization objects in the first and second subsets, selecting, by the computing device, the candidate portions of the data structure and applying the operations only to the candidate portions.
1 Assignment
0 Petitions
Accused Products
Abstract
In general, techniques of the present disclosure relate to synchronizing concurrent access to multiple portions of a data structure. In one example, a method includes, sequentially selecting a plurality of requests from a request queue, wherein at least one of the requests specifies a plurality of requested synchronization objects for corresponding candidate portions of a data structure to which to apply an operation associated with a data element. The method also includes querying one or more sets of identifiers to determine whether one or more of the requested synchronizations objects specified by the selected request are acquirable. The method also includes acquiring each of the requested synchronization objects that are acquirable. The method includes, responsive to acquiring all of the one or more requested synchronization objects, selecting a subset of the candidate portions of the data structure and applying the operation only to the selected subset of the candidate portions.
-
Citations
29 Claims
-
1. A method comprising:
-
sequentially selecting, by a computing device, a plurality of requests from a request queue, wherein at least one request of the plurality of requests specifies a plurality of requested synchronization objects, the requested synchronization objects corresponding to different non-contiguous candidate portions dispersed in a data structure to which to apply operations, wherein each of the plurality of requested synchronization objects for each of the corresponding candidate portions must be acquired to apply the operations for the at least one request on the corresponding candidate portions of the data structure; responsive to determining that a first subset of the plurality of requested synchronization objects has been previously acquired by the at least one request, querying, by the computing device, one or more sets of identifiers to determine whether a second subset of the plurality of requested synchronizations objects not previously acquired by the at least one request are acquirable, wherein each respective identifier of one or more sets of identifiers identifies a respective synchronization object of the plurality of requested synchronization objects; acquiring, by the computing device, any of the second subset of the plurality of requested synchronization objects that are acquirable; and responsive to acquiring all of the requested synchronization objects in the first and second subsets, selecting, by the computing device, the candidate portions of the data structure and applying the operations only to the candidate portions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A computing device comprising:
-
a control unit having one or more hardware-based microprocessors; and a manager module executable by the microprocessors, wherein the manager module sequentially selects a plurality of requests from a request queue, wherein at least one request of the plurality of requests specifies a plurality of requested synchronization objects, the requested synchronization objects corresponding to different non-contiguous candidate portions dispersed in a data structure to which to apply operations, wherein each of the plurality of requested synchronization objects for each of the corresponding candidate portions must be acquired to apply the operations for the at least one request on the corresponding candidate portions of the data structure; wherein the manager module, responsive to determining that a first subset of the plurality of requested synchronization objects has been previously acquired by the at least one request, queries one or more sets of identifiers to determine whether a second subset of the plurality of requested synchronizations objects not previously acquired by the at least one request are acquirable, wherein each respective identifier of one or more sets of identifiers identifies a respective synchronization object of the plurality of requested synchronization objects; wherein the manager module acquires any of the second subset of the plurality of requested synchronization objects that are acquirable; and wherein responsive to acquiring all of the requested synchronization objects in the first and second subsets, selecting, by the computing device, the candidate portions of the data structure and applying the operations only to the candidate portions. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A non-transitory computer-readable memory comprising instruction that, when executed, cause one or more processors to:
-
sequentially select a plurality of requests from a request queue, wherein at least one request of the plurality of requests specifies a plurality of requested synchronization objects, the requested synchronization objects corresponding to different non-contiguous candidate portions dispersed in a data structure to which to apply operations, wherein each of the plurality of requested synchronization objects for each of the corresponding candidate portions must be acquired to apply the operations for the at least one request on the corresponding candidate portions of the data structure; responsive to determining that a first subset of the plurality of requested synchronization objects has been previously acquired by the at least one request, query one or more sets of identifiers to determine whether a second subset of the plurality of requested synchronizations objects not previously acquired by the at least one request are acquirable, wherein each respective identifier of one or more sets of identifiers identifies a respective synchronization object of the plurality of requested synchronization objects; acquire any of the second subset of the plurality of requested synchronization objects that are acquirable; and responsive to acquiring all of the requested synchronization objects in the first and second subsets, selecting the candidate portions of the data structure and applying the operations only to the candidate portions.
-
-
29. A computing device comprising:
-
a control unit having one or more hardware-based microprocessors; a manager module executable by the microprocessors; a hash engine configured to apply a plurality of hashing functions to a data element to generate a plurality of identifiers that identify different non-contiguous candidate portions dispersed in a hash table to which to write the data element; wherein the manager module sequentially selects a plurality of requests from a request queue, wherein at least one request of the plurality of requests specifies a plurality of locks, each of the requested locks corresponding to a different candidate portion of the hash table to which to apply an operation, wherein each of the plurality of requested locks for each of the corresponding candidate portions must be acquired to apply the operation for the at least one request on the subset of the corresponding candidate portions of the data structure; wherein the manager module, responsive to determining that a first subset of the plurality of requested locks has been previously acquired by the at least one request, queries one or more sets of identifiers to determine whether a second subset of the plurality of requested locks not previously acquired by the at least one request are acquirable, wherein each respective identifier of the one or more sets of identifies a respective lock of the plurality of requested locks; wherein the manager module acquires any of the second subset of the plurality of requested locks that are acquirable; and a filter component that, responsive to acquiring all of the requested locks in the first and second subsets, selects, by the microprocessors, the candidate portions of the hash table and writes the data element only to the candidate portions.
-
Specification