Non-Blocking Doubly-Linked Lists with Good Amortized Complexity
Niloufar Shafiei

TL;DR
This paper introduces a novel non-blocking doubly-linked list with proven amortized time bounds, supporting concurrent updates and moves via cursors in shared-memory systems.
Contribution
It provides the first amortized complexity proof for a non-blocking doubly-linked list implementation with cursor-based operations.
Findings
Operations have an amortized complexity of O(cp(op)) for updates and O(1) for moves.
Supports fully concurrent insertions and deletions when operations target different list parts.
Includes detailed correctness proof and amortized analysis.
Abstract
We present a new non-blocking doubly-linked list implementation for an asynchronous shared-memory system. It is the first such implementation for which an upper bound on amortized time complexity has been proved. In our implementation, operations access the list via cursors. Each cursor is associated with an item in the list and is local to a process. The implementation supports two update operations, insertBefore and delete, and two move operations, moveRight and moveLeft. An insertBefore(c, x) operation inserts an item x into the list immediately before the cursor c's location. A delete(c) operation removes the item at the cursor c's location and sets the cursor to the next item in the list. The move operations move the cursor one position to the right or left. The update operations use single-word Compare&Swap instructions. The move operations only read shared memory and never change…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsDistributed systems and fault tolerance · Optimization and Search Problems · Cryptography and Data Security
