Proceedings of the Twenty-Third Annual ACM Symposium on Parallelism in Algorithms and Architectures 2011
DOI: 10.1145/1989493.1989550
|View full text |Cite
|
Sign up to set email alerts
|

A lock-free algorithm for concurrent bags

Abstract: A lock-free bag data structure supporting unordered buffering is presented in this paper. The algorithm supports multiple producers and multiple consumers, as well as dynamic collection sizes. To handle concurrency efficiently, the algorithm was designed to thrive for disjoint-access-parallelism for the supported semantics. Therefore, the algorithm exploits a distributed design combined with novel techniques for handling concurrent modifications of linked lists using double marks, detection of total emptiness,… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
11
0

Year Published

2013
2013
2017
2017

Publication Types

Select...
3
2
2

Relationship

1
6

Authors

Journals

citations
Cited by 18 publications
(11 citation statements)
references
References 21 publications
(57 reference statements)
0
11
0
Order By: Relevance
“…In [83] a lock-free bag implementation is presented; the algorithm supports multiple producers and multiple consumers, as well as dynamic collection sizes. To handle concurrency efficiently, the algorithm was designed to optimize for disjoint-accessparallelism for the supported semantics.…”
Section: Producer-consumer Collectionsmentioning
confidence: 99%
“…In [83] a lock-free bag implementation is presented; the algorithm supports multiple producers and multiple consumers, as well as dynamic collection sizes. To handle concurrency efficiently, the algorithm was designed to optimize for disjoint-accessparallelism for the supported semantics.…”
Section: Producer-consumer Collectionsmentioning
confidence: 99%
“…Scal queues are relaxed queues with, in general, unbounded relaxation. Since any relaxed stack or queue implementation also implements a pool, we compare our work also to state-of-the-art pool implementations [1,3,19].…”
Section: Enq(x): { While(true);} Deq(): { Return Random();}mentioning
confidence: 99%
“…Moreover, we compare our k-stack with different pools. The lock-free (BAG) [19] pool is based on thread-local lists of elements. Threads put elements on their local list and take elements from their local list if it is not empty.…”
Section: K-stackmentioning
confidence: 99%
“…The MS_dequeue method is slightly different from the standard MS dequeue operation since it also returns the current_tail pointer of the partial queue, which is saved in a thread-local array of size p called tail_old when the partial queue is empty (line 12). If all partial queues have been found to be empty, the second pass of the emptiness check begins (line [16][17][18][19][20][21]. If a partial queue is found to have a tail pointer that differs from the tail pointer saved in tail_old (line 17) at least one new element has been enqueued into that queue.…”
Section: Load-balanced Dq Algorithmmentioning
confidence: 99%
“…The purpose of the counter is explained below. Next, the method works like the enqueue method except that it calls the try_MS_dequeue method, which is again using the MS algorithm, to dequeue an element from a partial queue whose head pointer has the lowest ABA counter (lines [17][18][19][20][21][22]. If an element is successfully dequeued it is returned (line 27).…”
Section: Least-recently-used Dq Algorithmmentioning
confidence: 99%