Linked-list implementation of a data structure with concurrent non-blocking insert and remove operations
First Claim
1. A non-blocking concurrent shared object representation encoded in a computer-readable medium, comprising:
- a linked-list of nodes encoding of a group of zero or more values; and
linearizable operations defined to implement semantics of at least insert and remove operations on the group, wherein concurrent execution of the linearizable operations is mediated using a first synchronization primitive to encode a marked node indication signifying logical deletion of a corresponding one of the values from the group, wherein the first synchronization primitive atomically examines and updates a single target, the updating being conditional on the examination.
2 Assignments
0 Petitions
Accused Products
Abstract
A simple and therefore highly usable non-blocking implementations of linked-lists can be provided using read, write, and CAS operations. Several realizations of linked-list based data-structures are described, which are non-blocking, linearizable, and exhibit disjoint-access for most operations. In other words, the realizations are non-blocking and linearizable while maintaining the property that operations on disjoint parts of the list do not interact, effectively lowering contention and increasing concurrency. We implement three exemplary data structures: sets, multi-sets, and ordered-sets. The exemplary implementations support insert, remove, and find operations, with natural semantics. An ordered-set implementation supports an additional removeGE operation.
87 Citations
30 Claims
-
1. A non-blocking concurrent shared object representation encoded in a computer-readable medium, comprising:
-
a linked-list of nodes encoding of a group of zero or more values; and linearizable operations defined to implement semantics of at least insert and remove operations on the group, wherein concurrent execution of the linearizable operations is mediated using a first synchronization primitive to encode a marked node indication signifying logical deletion of a corresponding one of the values from the group, wherein the first synchronization primitive atomically examines and updates a single target, the updating being conditional on the examination. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A non-blocking concurrent shared object representation encoded in a computer-readable medium comprising:
-
a linked-list of nodes encoding of a group of zero or more values; and linearizable operations defined to implement semantics of at least insert and remove operations on the group, wherein concurrent execution of the linearizable operations is mediated using a first synchronization primitive to encode a marked node indication signifying logical deletion of a corresponding one of the values from the group, wherein the first synchronization primitive atomically examines and updates a single target, the updating being conditional on the examination, wherein successful completion of an insertion into the group requires, at most, one atomic update of the concurrent shared object; wherein successful completion of a deletion from the group requires, at most, two atomic updates of the concurrent shared object; and wherein mere traversal of the concurrent shared object is without atomic update of the concurrent shared object.
-
-
16. A method of managing access to a linked-list of nodes susceptible to concurrent operations on a group encoded therein, the method comprising:
-
separating deletion of a value from the group into at least two functional sequences; the first functional sequence performing a logical deletion of the value using a synchronization primitive to mark a corresponding one of the nodes; and the second functional sequence excising the marked node from the linked-list, wherein the synchronization primitive atomically examines and updates a single target, the updating being conditional on the examination. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A computer program product encoded in at least one computer readable medium, the computer program product comprising:
-
at least two functional sequences providing non-blocking access to a concurrent shared object, the concurrent shared object instantiable as a linked-list of nodes encoding of a group of zero or more values; a first of the functional sequences defined to implement semantics of an insert operation on the group; and a second of the functional sequences defined to implement semantics of a remove operation on the group, wherein instances of the functional sequences are linearizable and concurrent execution thereof by plural processors of a multiprocessor is mediated using a synchronization primitive to encode a marked node indication signifying logical deletion of a corresponding one of the values from the group with separate physical excision of the corresponding node, wherein the synchronization primitive atomically examines and updates a single target, the updating being conditional on the examination.
-
-
26. The computer program product as recited in 25,
embodied as a software component combinable with program code to provide the program code with linearizable, non-blocking access to the concurrent shared object.
-
27. The computer program product as recited in 25,
embodied as a program executable to provide linearizable, non-blocking access to the concurrent shared object.
-
28. The computer program product as recited in 25,
wherein the at least one computer readable medium is selected from the set of a disk, tape or other magnetic, optical, or electronic storage medium.
-
29. An apparatus comprising:
-
plural processors; one or more data stores addressable by each of the plural processors; means for coordinating concurrent execution, by ones of the plural processors, of at least insert and remove operations on a group of zero or more values encoded in the one or more data stores, the coordinating employing a first synchronization primitive to encode an indication signifying logical deletion of a corresponding one of the values from the group and a second synchronization primitive to physically excise the node corresponding to the logically deleted value, wherein the synchronization primitives atomically examine and update their respective single targets, the updating being conditional on the examination; and means for traversing the encoded group without use of an atomic operation. - View Dependent Claims (30)
-
Specification