License: Creative Commons Attribution 3.0 Unported license (CC BY 3.0)
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.OPODIS.2015.35
URN: urn:nbn:de:0030-drops-66787
URL: https://drops.dagstuhl.de/opus/volltexte/2016/6678/
Go to the corresponding LIPIcs Volume Portal


Shafiei, Niloufar

Non-Blocking Doubly-Linked Lists with Good Amortized Complexity

pdf-format:
LIPIcs-OPODIS-2015-35.pdf (0.6 MB)


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 located at an item in the list and is local to a process. In our implementation, cursors can be used to traverse and update the list, even as concurrent operations modify the list. 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. Update operations use single-word Compare&Swap instructions. Move operations only read shared memory and never change the state of the data structure. If all update operations modify different parts of the list, they run completely concurrently. A cursor is active if it is initialized, but not yet removed from the process's set of cursors. Let c.(op) be the maximum number of active cursors at any one time during the operation op. The amortized step complexity is O(c.(op)) for each update op and O(1) for each move. We provide a detailed correctness proof and amortized analysis of our implementation.

BibTeX - Entry

@InProceedings{shafiei:LIPIcs:2016:6678,
  author =	{Niloufar Shafiei},
  title =	{{Non-Blocking Doubly-Linked Lists with Good Amortized Complexity}},
  booktitle =	{19th International Conference on Principles of Distributed Systems (OPODIS 2015)},
  pages =	{1--17},
  series =	{Leibniz International Proceedings in Informatics (LIPIcs)},
  ISBN =	{978-3-939897-98-9},
  ISSN =	{1868-8969},
  year =	{2016},
  volume =	{46},
  editor =	{Emmanuelle Anceaume and Christian Cachin and Maria Potop-Butucaru},
  publisher =	{Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik},
  address =	{Dagstuhl, Germany},
  URL =		{http://drops.dagstuhl.de/opus/volltexte/2016/6678},
  URN =		{urn:nbn:de:0030-drops-66787},
  doi =		{10.4230/LIPIcs.OPODIS.2015.35},
  annote =	{Keywords: non-blocking data structure, doubly-linked list, shared memory, amortized complexity, cursor}
}

Keywords: non-blocking data structure, doubly-linked list, shared memory, amortized complexity, cursor
Collection: 19th International Conference on Principles of Distributed Systems (OPODIS 2015)
Issue Date: 2016
Date of publication: 13.10.2016


DROPS-Home | Fulltext Search | Imprint | Privacy Published by LZI