Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Skip lists: a probabilistic alternative to balanced trees
Communications of the ACM
A method for implementing lock-free shared-data structures
SPAA '93 Proceedings of the fifth annual ACM symposium on Parallel algorithms and architectures
High performance dynamic lock-free hash tables and list-based sets
Proceedings of the fourteenth annual ACM symposium on Parallel algorithms and architectures
A Pragmatic Implementation of Non-blocking Linked-Lists
DISC '01 Proceedings of the 15th International Conference on Distributed Computing
A Practical Multi-word Compare-and-Swap Operation
DISC '02 Proceedings of the 16th International Conference on Distributed Computing
Software transactional memory for dynamic-sized data structures
Proceedings of the twenty-second annual symposium on Principles of distributed computing
Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects
IEEE Transactions on Parallel and Distributed Systems
Lock-free linked lists and skip lists
Proceedings of the twenty-third annual ACM symposium on Principles of distributed computing
A practical concurrent binary search tree
Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
Non-blocking binary search trees
Proceedings of the 29th ACM SIGACT-SIGOPS symposium on Principles of distributed computing
Fast concurrent lock-free binary search trees
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
A general technique for non-blocking 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 |
Recent work on concurrent search trees has yielded solutions which either rely on locking parts of the data structure or exhibit suboptimal memory use. Trees are typically non-trivial to parallelise due to having multiple mutable fields per node but their average search time relative to simpler structures like linked-lists makes them desirable. We present a parallel binary search tree algorithm built using single-word reads, writes, and compare-and-swap. In this algorithm, operations will only contend if concurrent updates affect the same node(s). Updates are non-blocking as threads can complete each other's operations if necessary and each operation is linearisable. Experimental evidence shows it to be fast when compared with alternative solutions and scalable to large numbers of concurrently executing threads. It outperforms concurrent skip lists in the majority of scenarios tested; showing 65% more throughput when the performance difference of every experiment is averaged, and its memory footprint is significantly smaller than that of the other structures tested.