--------------------------------------------------------------------------------
Fedora Update Notification
FEDORA-2021-eba0a44cc3
2021-12-25 01:10:39.936877
--------------------------------------------------------------------------------
Name : atomic-queue
Product : Fedora 34
Version : 1.0
Release : 3.fc34
URL :
https://github.com/max0x7ba/atomic_queue
Summary : C++ lockless queue
Description :
C++14 multiple-producer-multiple-consumer lockless queues based on circular
buffer with std::atomic.
The main design principle these queues follow is minimalism: the bare minimum
of atomic operations, fixed size buffer, value semantics.
These qualities are also limitations:
��� The maximum queue size must be set at compile time or construction time.
The circular buffer side-steps the memory reclamation problem inherent in
linked-list based queues for the price of fixed buffer size. See Effective
memory reclamation for lock-free data structures in C++ for more details.
Fixed buffer size may not be that much of a limitation, since once the
queue gets larger than the maximum expected size that indicates a problem
that elements aren���t processed fast enough, and if the queue keeps growing
it may eventually consume all available memory which may affect the entire
system, rather than the problematic process only. The only apparent
inconvenience is that one has to do an upfront back-of-the-envelope
calculation on what would be the largest expected/acceptable queue size.
��� There are no OS-blocking push/pop functions. This queue is designed for
ultra-low-latency scenarios and using an OS blocking primitive would be
sacrificing push-to-pop latency. For lowest possible latency one cannot
afford blocking in the OS kernel because the wake-up latency of a blocked
thread is about 1-3 microseconds, whereas this queue���s round-trip time can
be as low as 150 nanoseconds.
Ultra-low-latency applications need just that and nothing more. The minimalism
pays off, see the throughput and latency benchmarks.
Available containers are:
��� AtomicQueue - a fixed size ring-buffer for atomic elements.
��� OptimistAtomicQueue - a faster fixed size ring-buffer for atomic elements
which busy-waits when empty or full.
��� AtomicQueue2 - a fixed size ring-buffer for non-atomic elements.
��� OptimistAtomicQueue2 - a faster fixed size ring-buffer for non-atomic
elements which busy-waits when empty or full.
These containers have corresponding AtomicQueueB, OptimistAtomicQueueB,
AtomicQueueB2, OptimistAtomicQueueB2 versions where the buffer size is
specified as an argument to the constructor.
Totally ordered mode is supported. In this mode consumers receive messages in
the same FIFO order the messages were posted. This mode is supported for push
and pop functions, but for not the try_ versions. On Intel x86 the totally
ordered mode has 0 cost, as of 2019.
Single-producer-single-consumer mode is supported. In this mode, no
read-modify-write instructions are necessary, only the atomic loads and stores.
That improves queue throughput significantly.
--------------------------------------------------------------------------------
Update Information:
Let the devel subpackage be noarch ---- Update to 1.0 (close #2030645). This
is the first versioned release. There are no source-code changes.
--------------------------------------------------------------------------------
ChangeLog:
* Thu Dec 16 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> 1.0-3
- Let the devel subpackage be noarch
* Thu Dec 9 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> 1.0-2
- Fix release number���no longer a pre-release
* Thu Dec 9 2021 Benjamin A. Beasley <code(a)musicinmybrain.net> 1.0-0.1
- Update to 1.0 (close RHBZ#2030645)
--------------------------------------------------------------------------------
References:
[ 1 ] Bug #2030645 - atomic-queue-1.0 is available
https://bugzilla.redhat.com/show_bug.cgi?id=2030645
--------------------------------------------------------------------------------
This update can be installed with the "dnf" update program. Use
su -c 'dnf upgrade --advisory FEDORA-2021-eba0a44cc3' at the command
line. For more information, refer to the dnf documentation available at
http://dnf.readthedocs.io/en/latest/command_ref.html#upgrade-command-label
All packages are signed with the Fedora Project GPG key. More details on the
GPG keys used by the Fedora Project can be found at
https://fedoraproject.org/keys
--------------------------------------------------------------------------------