Thu, 11 Aug 2022 17:10:43 UTC

Information for build atomic-queue-1.0-3.fc35

ID1867775
Package Nameatomic-queue
Version1.0
Release3.fc35
Epoch
Sourcegit+https://src.fedoraproject.org/rpms/atomic-queue.git#b8e013602d635031c0b55ee65a44882792ea063f
SummaryC++ lockless queue
DescriptionC++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.
Built bymusic
State complete
Volume DEFAULT
StartedThu, 16 Dec 2021 18:18:00 UTC
CompletedThu, 16 Dec 2021 18:23:57 UTC
Taskbuild (f35-candidate, /rpms/atomic-queue.git:b8e013602d635031c0b55ee65a44882792ea063f)
Extra{'source': {'original_url': 'git+https://src.fedoraproject.org/rpms/atomic-queue.git#b8e013602d635031c0b55ee65a44882792ea063f'}}
Tags
f35-updates
RPMs
src
atomic-queue-1.0-3.fc35.src.rpm (info) (download)
noarch
atomic-queue-devel-1.0-3.fc35.noarch.rpm (info) (download)
Logs
armv7hl
hw_info.log
state.log
build.log
root.log
mock_output.log
noarch_rpmdiff.json
i686
hw_info.log
state.log
build.log
root.log
mock_output.log
noarch_rpmdiff.json
x86_64
hw_info.log
state.log
build.log
root.log
mock_output.log
noarch_rpmdiff.json
aarch64
hw_info.log
state.log
build.log
root.log
mock_output.log
noarch_rpmdiff.json
ppc64le
hw_info.log
state.log
build.log
root.log
mock_output.log
noarch_rpmdiff.json
s390x
hw_info.log
state.log
build.log
root.log
mock_output.log
noarch_rpmdiff.json
Changelog * Thu Dec 16 2021 Benjamin A. Beasley <code@musicinmybrain.net> 1.0-3 - Let the devel subpackage be noarch * Thu Dec 09 2021 Benjamin A. Beasley <code@musicinmybrain.net> 1.0-2 - Fix release number—no longer a pre-release * Thu Dec 09 2021 Benjamin A. Beasley <code@musicinmybrain.net> 1.0-0.1 - Update to 1.0 (close RHBZ#2030645) * Fri Oct 22 2021 Benjamin A. Beasley <code@musicinmybrain.net> 0-0.6 - Update to 7013a8b (support up to 256 byte cache lines) * Wed Oct 20 2021 Benjamin A. Beasley <code@musicinmybrain.net> 0-0.5 - Update to ee3d91c: fix RHBZ#1994598, fix RHBZ#1994599 * Tue Oct 19 2021 Benjamin A. Beasley <code@musicinmybrain.net> 0-0.4 - Update to commit dfd2cbe * Fri Sep 24 2021 Benjamin A. Beasley <code@musicinmybrain.net> 0-0.3 - We really don’t need to adjust the C++ standard for the tests * Mon Aug 16 2021 Benjamin A. Beasley <code@musicinmybrain.net> 0-0.2 - Fix an long line in the -devel package description * Mon Aug 16 2021 Benjamin A. Beasley <code@musicinmybrain.net> 0-0.1 - Initial package