Atomically moving list elements between lists using read-copy update
First Claim
1. A method for performing a read operation lookup of a target list element that is subject to being atomically moved from a first list to a second list by a concurrent move operation, comprising:
- initiating a read operation list traversal beginning at a first list element in said second list; and
upon encountering a list element that is a placeholder for said target list element in said second list that was generated as a result of said concurrent move operation involving said target list element being moved from said first list to said second list, waiting until said placeholder indicates that said move operation has completed, and thereafter returning read operation failure so that said lookup can be retried.
1 Assignment
0 Petitions
Accused Products
Abstract
A system, method and computer program product for atomically moving a shared list element from a first list location to a second list location includes inserting a placeholder element at the second list location to signify to readers that a move operation is underway, removing the shared list element from the first list location, re-identifying the list element to reflect its move from the first list location to the second list location, inserting it at the second list location and unlinking the placeholder element. A deferred removal of the placeholder element is performed following a period in which readers can no longer maintain references thereto. A method, system and computer program product are additionally provided for performing a lookup of a target list element that is subject to being atomically moved from a first list to a second list.
-
Citations
15 Claims
-
1. A method for performing a read operation lookup of a target list element that is subject to being atomically moved from a first list to a second list by a concurrent move operation, comprising:
-
initiating a read operation list traversal beginning at a first list element in said second list; and upon encountering a list element that is a placeholder for said target list element in said second list that was generated as a result of said concurrent move operation involving said target list element being moved from said first list to said second list, waiting until said placeholder indicates that said move operation has completed, and thereafter returning read operation failure so that said lookup can be retried. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A data processing system adapted to perform a read operation lookup of a target list element that is subject to being atomically moved from a first list to a second list by a concurrent move operation, comprising:
-
means for initiating a read operation list traversal beginning at a first list element in said second list; and means responsive to encountering a list element that is a placeholder for said target list element in said second list that was generated as a result of said concurrent move operation involving said target list element being moved from said first list to said second list for waiting until said placeholder indicates that said move operation has completed, and thereafter returning read operation failure so that said lookup can be retried. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A computer program product for performing a read operation lookup of a target list element that is subject to being atomically moved from a first list to a second list by a concurrent move operation, comprising:
-
one or more data storage media; means recorded on said data storage media for programming a data processing platform to operate during a read operation, as by; initiating a read operation list traversal beginning at a first list element in said second list; and upon encountering a list element that is a placeholder for said target list element in said second list that was generated as a result of said concurrent move operation involving said target list element being moved from said first list to said second list, waiting until said placeholder indicates that said move operation has completed, and thereafter returning read operation failure so that said lookup can be retried. - View Dependent Claims (12, 13, 14, 15)
-
Specification