ACM Transactions on Database Systems (TODS)
Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Scalable reader-writer synchronization for shared-memory multiprocessors
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
Lock-free linked lists using compare-and-swap
Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing
Practical implementations of non-blocking synchronization primitives
PODC '97 Proceedings of the sixteenth annual ACM symposium on Principles of distributed computing
Nonblocking algorithms and preemption-safe locking on multiprogrammed shared memory multiprocessors
Journal of Parallel and Distributed Computing
Proceedings of the twelfth annual ACM symposium on Parallel algorithms and architectures
Fault-Tolerant Parallel Computation
Fault-Tolerant Parallel Computation
High performance dynamic lock-free hash tables and list-based sets
Proceedings of the fourteenth annual ACM symposium on Parallel algorithms and architectures
Safe memory reclamation for dynamic lock-free objects using atomic reads and writes
Proceedings of the twenty-first annual symposium on Principles of distributed computing
Proceedings of the twenty-first annual symposium on Principles of distributed computing
Introduction to Algorithms
Extendible hashing for concurrent operations and distributed data
PODS '83 Proceedings of the 2nd ACM SIGACT-SIGMOD symposium on Principles of database systems
Concurrent Operations in Extendible Hashing
VLDB '86 Proceedings of the 12th International Conference on Very Large Data Bases
A Pragmatic Implementation of Non-blocking Linked-Lists
DISC '01 Proceedings of the 15th International Conference on Distributed Computing
The Repeat Offender Problem: A Mechanism for Supporting Dynamic-Sized, Lock-Free Data Structures
DISC '02 Proceedings of the 16th International Conference on Distributed Computing
Nonblocking k-compare-single-swap
Proceedings of the fifteenth annual ACM symposium on Parallel algorithms and architectures
Software transactional memory for dynamic-sized data structures
Proceedings of the twenty-second annual symposium on Principles of distributed computing
Non-blocking Synchronization and System Design
Non-blocking Synchronization and System Design
An algorithm for the asynchronous Write-All problem based on process collision
Distributed Computing
Soft Real-Time Systems: Predictability vs. Efficiency (Series in Computer Science)
Soft Real-Time Systems: Predictability vs. Efficiency (Series in Computer Science)
Distributed computing and the multicore revolution
ACM SIGACT News
DISC '08 Proceedings of the 22nd international symposium on Distributed Computing
Thread cooperation in multicore architectures for frequency counting over multiple data streams
Proceedings of the VLDB Endowment
DISC'09 Proceedings of the 23rd international conference on Distributed computing
Lock-free parallel dynamic programming
Journal of Parallel and Distributed Computing
Parallel implementations of Brunotte's algorithm
Journal of Parallel and Distributed Computing
Minimal perfect hashing: A competitive method for indexing internal memory
Information Sciences: an International Journal
Brief announcement: transaction polymorphism
Proceedings of the twenty-third annual ACM symposium on Parallelism in algorithms and architectures
Cruiser: concurrent heap buffer overflow monitoring using lock-free data structures
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
SRC: facilitating efficient parallelization of information storage and retrieval on large data sets
Proceedings of the international conference on Supercomputing
Resizable, scalable, concurrent hash tables via relativistic programming
USENIXATC'11 Proceedings of the 2011 USENIX conference on USENIX annual technical conference
Scalable hashing for shared memory supercomputers
Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis
Concurrent tries with efficient non-blocking snapshots
Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming
LHlf: lock-free linear hashing (poster paper)
Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming
USENIX ATC'12 Proceedings of the 2012 USENIX conference on Annual Technical Conference
ShadowData: shadowing heap objects in Java
Proceedings of the 11th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering
On the scalability of the Erlang term storage
Proceedings of the twelfth ACM SIGPLAN workshop on Erlang
Hi-index | 0.00 |
We present the first lock-free implementation of an extensible hash table running on current architectures. Our algorithm provides concurrent insert, delete, and find operations with an expected O(1) cost. It consists of very simple code, easily implementable using only load, store, and compare-and-swap operations. The new mathematical structure at the core of our algorithm is recursive split-ordering, a way of ordering elements in a linked list so that they can be repeatedly “split” using a single compare-and-swap operation. Metaphorically speaking, our algorithm differs from prior known algorithms in that extensibility is derived by “moving the buckets among the items” rather than “the items among the buckets.” Though lock-free algorithms are expected to work best in multiprogrammed environments, empirical tests we conducted on a large shared memory multiprocessor show that even in non-multiprogrammed environments, the new algorithm performs as well as the most efficient known lock-based resizable hash-table algorithm, and in high load cases it significantly outperforms it.