Journal of the ACM (JACM)
ACM Transactions on Computer Systems (TOCS)
Elimination trees and the construction of pools and stacks: preliminary version
Proceedings of the seventh annual ACM symposium on Parallel algorithms and architectures
ACM Transactions on Computer Systems (TOCS)
Simple, fast, and practical non-blocking and blocking concurrent queue algorithms
PODC '96 Proceedings of the fifteenth annual ACM symposium on Principles of distributed computing
A scalable lock-free stack algorithm
Proceedings of the sixteenth annual ACM symposium on Parallelism in algorithms and architectures
Communications of the ACM - Security in the Browser
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
Scalable flat-combining based synchronous queues
DISC'10 Proceedings of the 24th international conference on Distributed computing
Brief announcement: multilane - a concurrent blocking multiset
Proceedings of the twenty-third annual ACM symposium on Parallelism in algorithms and architectures
A lock-free algorithm for concurrent bags
Proceedings of the twenty-third annual ACM symposium on Parallelism in algorithms and architectures
Fast and scalable rendezvousing
DISC'11 Proceedings of the 25th international conference on Distributed computing
CAFÉ: scalable task pools with adjustable fairness and contention
DISC'11 Proceedings of the 25th international conference on Distributed computing
A dynamic elimination-combining stack algorithm
OPODIS'11 Proceedings of the 15th international conference on Principles of Distributed Systems
SALSA: scalable and low synchronization NUMA-aware algorithm for producer-consumer pools
Proceedings of the twenty-fourth annual ACM symposium on Parallelism in algorithms and architectures
Quantitative relaxation of concurrent data structures
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the ACM International Conference on Computing Frontiers
Hi-index | 0.00 |
Producer-consumer pools, that is, collections of unordered objects or tasks, are a fundamental element of modern multiprocessor software and a target of extensive research and development. For example, there are three common ways to implement such pools in the Java JDK6.0: the SynchronousQueue, the LinkedBlockingQueue, and the ConcurrentLinkedQueue. Unfortunately, most pool implementations, including the ones in the JDK, are based on centralized structures like a queue or a stack, and thus are limited in their scalability. This paper presents the ED-Tree, a distributed pool structure based on a combination of the elimination-tree and diffracting-tree paradigms, allowing high degrees of parallelism with reduced contention. We use the ED-Tree to provide new pool implementations that compete with those of the JDK. In experiments on a 128 way Sun Maramba multicore machine, we show that ED-Tree based pools scale well, outperforming the corresponding algorithms in the JDK6.0 by a factor of 10 or more at high concurrency levels, while providing similar performance at low levels.