[Bug 2129304] New: Review Request: moodycamel-readerwriterqueue - A
single-producer, single-consumer lock-free queue for C++
by bugzilla@redhat.com
https://bugzilla.redhat.com/show_bug.cgi?id=2129304
Bug ID: 2129304
Summary: Review Request: moodycamel-readerwriterqueue - A
single-producer, single-consumer lock-free queue for
C++
Product: Fedora
Version: rawhide
Hardware: All
OS: Linux
Status: NEW
Component: Package Review
Severity: medium
Assignee: nobody(a)fedoraproject.org
Reporter: sergey(a)mende.spb.ru
QA Contact: extras-qa(a)fedoraproject.org
CC: package-review(a)lists.fedoraproject.org
Target Milestone: ---
Classification: Fedora
Spec:
https://download.copr.fedorainfracloud.org/results/snmende/moodycamel-rea...
SRPM:
https://download.copr.fedorainfracloud.org/results/snmende/moodycamel-rea...
Description: A single-producer, single-consumer lock-free queue for C++
This mini-repository has my very own implementation of a lock-free queue (that
I designed from scratch) for C++.
It only supports a two-thread use case (one consuming, and one producing). The
threads can't switch roles, though
you could use this queue completely from a single thread if you wish (but that
would sort of defeat the purpose!).
Note: If you need a general-purpose multi-producer, multi-consumer lock free
queue, I have [one of those too][mpmc].
This repository also includes a [circular-buffer SPSC queue][circular] which
supports blocking on enqueue as well as dequeue.
Features:
- [Blazing fast][benchmarks]
- Compatible with C++11 (supports moving objects instead of making copies)
- Fully generic (templated container of any type) -- just like `std::queue`,
you never need to allocate memory for elements yourself
(which saves you the hassle of writing a lock-free memory manager to hold the
elements you're queueing)
- Allocates memory up front, in contiguous blocks
- Provides a `try_enqueue` method which is guaranteed never to allocate memory
(the queue starts with an initial capacity)
- Also provides an `enqueue` method which can dynamically grow the size of the
queue as needed
- Also provides `try_emplace`/`emplace` convenience methods
- Has a blocking version with `wait_dequeue`
- Completely "wait-free" (no compare-and-swap loop). Enqueue and dequeue are
always O(1) (not counting memory allocation)
- On x86, the memory barriers compile down to no-ops, meaning enqueue and
dequeue are just a simple series of loads and stores (and branches)}
Fedora Account System Username: snmende
Build:
https://copr.fedorainfracloud.org/coprs/snmende/moodycamel-readerwriterqu...
--
You are receiving this mail because:
You are on the CC list for the bug.
You are always notified about changes to this product and component
https://bugzilla.redhat.com/show_bug.cgi?id=2129304
1 year, 7 months