Locking without blocking: making lock based concurrent data structure algorithms nonblocking
PODS '92 Proceedings of the eleventh ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
A method for implementing lock-free shared-data structures
SPAA '93 Proceedings of the fifth annual ACM symposium on Parallel algorithms and architectures
Universal constructions for multi-object operations
Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing
Lock-free linked lists using compare-and-swap
Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing
Amortization results for chromatic search trees, with an application to priority queues
Journal of Computer and System Sciences
Concurrent manipulation of binary search trees
ACM Transactions on Database Systems (TODS)
AVL trees with relaxed balance
Journal of Computer and System Sciences
Relaxed balance for search trees with local rebalancing
Acta Informatica
Lock-Free Concurrent Tree Structures for Multiprocessor Systems
Proceedings of the 1994 International Conference on Parallel and Distributed Systems
Software transactional memory for dynamic-sized data structures
Proceedings of the twenty-second annual symposium on Principles of distributed computing
Concurrent programming without locks
ACM Transactions on Computer Systems (TOCS)
A dichromatic framework for balanced trees
SFCS '78 Proceedings of the 19th Annual Symposium on Foundations of Computer Science
A practical concurrent binary search tree
Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
Non-blocking binary search trees
Proceedings of the 29th ACM SIGACT-SIGOPS symposium on Principles of distributed computing
Lock-Free Multiway Search Trees
ICPP '10 Proceedings of the 2010 39th International Conference on Parallel Processing
A speculation-friendly binary search tree
Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming
Non-blocking k-ary search trees
OPODIS'11 Proceedings of the 15th international conference on Principles of Distributed Systems
Proceedings of the twenty-fourth annual ACM symposium on Parallelism in algorithms and architectures
A non-blocking internal binary search tree
Proceedings of the twenty-fourth annual ACM symposium on Parallelism in algorithms and architectures
CBTree: a practical concurrent self-adjusting search tree
DISC'12 Proceedings of the 26th international conference on Distributed Computing
Pragmatic primitives for non-blocking data structures
Proceedings of the 2013 ACM symposium on Principles of distributed computing
Brief announcement: resettable objects and efficient memory reclamation for concurrent algorithms
Proceedings of the 2013 ACM symposium on Principles of distributed computing
A contention-friendly binary search tree
Euro-Par'13 Proceedings of the 19th international conference on Parallel Processing
Non-blocking Patricia Tries with Replace Operations
ICDCS '13 Proceedings of the 2013 IEEE 33rd International Conference on Distributed Computing Systems
Fast concurrent lock-free binary search trees
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Practical concurrent binary search trees via logical ordering
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Fast concurrent lock-free binary search trees
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Practical concurrent binary search trees via logical ordering
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.00 |
We describe a general technique for obtaining provably correct, non-blocking implementations of a large class of tree data structures where pointers are directed from parents to children. Updates are permitted to modify any contiguous portion of the tree atomically. Our non-blocking algorithms make use of the LLX, SCX and VLX primitives, which are multi-word generalizations of the standard LL, SC and VL primitives and have been implemented from single-word CAS. To illustrate our technique, we describe how it can be used in a fairly straightforward way to obtain a non-blocking implementation of a chromatic tree, which is a relaxed variant of a red-black tree. The height of the tree at any time is O(c + log n), where n is the number of keys and c is the number of updates in progress. We provide an experimental performance analysis which demonstrates that our Java implementation of a chromatic tree rivals, and often significantly outperforms, other leading concurrent dictionaries.