Shared synchronized skip-list data structure and technique employing linearizable operations
First Claim
Patent Images
1. A method of operating on a shared data structure that includes a representation of an ordered set of keys, the method comprising:
- instantiating nodes of the shared data structure in memory, wherein plural levels of same direction referencing chains traverse respective subsets of the nodes in accordance with a key ordering relationship thereof, a first-level of the referencing chains traversing each node of the shared data structure and at least one other level of the referencing chains traversing less than all nodes of the shared data structure; and
operating on the shared data structure using insert-type and delete-type operations that are linearizable and lock-free for all concurrent executions thereof,wherein the insert-type operation performs a synchronized update of pointers beginning at the first level thereof and continuing upward, andwherein the delete-type operation performs a synchronized update of pointers beginning at a Kth level thereof and continuing downward to the first level.
2 Assignments
0 Petitions
Accused Products
Abstract
A set of structures and techniques are described herein whereby an exemplary concurrent shared object, namely a shared skip list, can be implemented in a lock-free manner. Indeed, we have developed a number of interesting variants of a lock-free shared skip-list, including variants that may be employed to provide a lock-free shared dictionary. In some variants, a key-value dictionary is implemented.
-
Citations
19 Claims
-
1. A method of operating on a shared data structure that includes a representation of an ordered set of keys, the method comprising:
-
instantiating nodes of the shared data structure in memory, wherein plural levels of same direction referencing chains traverse respective subsets of the nodes in accordance with a key ordering relationship thereof, a first-level of the referencing chains traversing each node of the shared data structure and at least one other level of the referencing chains traversing less than all nodes of the shared data structure; and operating on the shared data structure using insert-type and delete-type operations that are linearizable and lock-free for all concurrent executions thereof, wherein the insert-type operation performs a synchronized update of pointers beginning at the first level thereof and continuing upward, and wherein the delete-type operation performs a synchronized update of pointers beginning at a Kth level thereof and continuing downward to the first level. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A computer readable shared memory storing encoding of a shared object, the encoding comprising:
-
plural nodes; plural levels of same-direction referencing chains that traverse respective subsets of the nodes in accordance with a key ordering relationship thereof, a first of the referencing chains traversing each node of the shared data structure and a second of the referencing chains traversing less than all nodes of the shared data structure; and a functional encoding of linearizable operations on the shared object, wherein the linearizable operations include both insert-type and remove-type operations and are lock-free for all concurrent executions thereof, wherein the insert-type operation performs a synchronized update of pointers beginning at the first level thereof and continuing upward, and wherein the delete-type operation performs a synchronized update of pointers beginning at a Kth level thereof and continuing downward to the first level. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. In a computational system that employs a shared list-type data structure that includes plural nodes and plural levels of referencing chains that traverse respective ones of the nodes in accordance with an ordering thereof wherein a higher-level one of the referencing chains traverses no more than a subset of the nodes traversed by a lower-level one of the referencing chains, a method of facilitating lock-free concurrent operations on the shared list-type data structure, the method comprising:
-
deleting a node from the shared list-type data structure by excising the node from successive ones of the referencing chains, beginning with a highest-level one of the referencing chains that traverses the node and continuing through a lowest-level one of the referencing chains, wherein each such excision employs a linearizable synchronization operation to bridge the excised node and associate a dead pointer indication therewith; and inserting a node into the shared list-type data structure by introducing the inserted node into one or more of the referencing chains, beginning with the lowest-level referencing chains and continuing through successive zero or more higher-level referencing chains. - View Dependent Claims (14, 15)
-
-
16. A method comprising:
-
defining a shared list-type data structure that includes plural nodes and plural levels of same direction referencing chains that traverse at least some of the nodes in accordance with an ordering thereof, wherein a higher-level one of the referencing chains traverses no more than a subset of the nodes traversed by a lower-level one of the referencing chains; and inserting into, and deleting from, the shared list-type data structure, wherein all concurrent executions of the deleting and the inserting are linearizable and lock-free, wherein the inserting comprises performing a synchronized update of pointers beginning at a first level and continuing upward, and wherein the deleting comprises performing a synchronized update of pointers beginning at a Kth level and continuing downward to the first level.
-
-
17. An apparatus comprising:
-
a definition of a skip list instantiable in storage; and lock-free means for coordinating concurrent and linearizable executions of both insert-type and delete-type operations on the skip list, wherein the insert-type operation performs a synchronized update of pointers beginning at the first level thereof and continuing upward, and a processor; wherein the delete-type operation performs a synchronized update of pointers beginning at a Kth level thereof and continuing downward to the first level. - View Dependent Claims (18, 19)
-
Specification