Skip lists: a probabilistic alternative to balanced trees
Communications of the ACM
Concurrent maintenance of skip lists
Concurrent maintenance of skip lists
Introduction to parallel computing: design and analysis of algorithms
Introduction to parallel computing: design and analysis of algorithms
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
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An efficient algorithm for concurrent priority queue heaps
Information Processing Letters
Purely functional data structures
Purely functional data structures
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Introduction to algorithms
Type Classes with Functional Dependencies
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
A Pragmatic Implementation of Non-blocking Linked-Lists
DISC '01 Proceedings of the 15th International Conference on Distributed Computing
Skiplist-Based Concurrent Priority Queues
IPDPS '00 Proceedings of the 14th International Symposium on Parallel and Distributed Processing
Parallel and Dynamic Shortest-Path Algorithms for Sparse Graphs
Parallel and Dynamic Shortest-Path Algorithms for Sparse Graphs
Lock-free linked lists and skip lists
Proceedings of the twenty-third annual ACM symposium on Principles of distributed computing
Composable memory transactions
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
Fast and lock-free concurrent priority queues for multi-thread systems
Journal of Parallel and Distributed Computing
Data parallel Haskell: a status report
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Runtime support for multicore Haskell
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Parallel performance tuning for Haskell
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Runtime Verification of Concurrent Haskell Programs
Electronic Notes in Theoretical Computer Science (ENTCS)
Scalable i/o event handling for GHC
Proceedings of the third ACM Haskell symposium on Haskell
Hi-index | 0.00 |
Although thread-safe priority queues are fundamental building blocks for many parallel algorithms, there are currently no scalable implementations available in Haskell. An efficient structure to implement priority queues is the skiplist, which is a multi-level linked list with shortcuts. We developed three thread-safe skiplist variants, based on locks, software transactional memory, and atomic compare-and-swap, respectively. In our benchmarks, the lock-based and compare-and-swap variants scaled about equally well, while the transactional variant was by several orders of magnitude slower.