atomic ring buffer is a fixed-size multi-producer multi-consumer queue that works on bare-metal systems. Under certain conditions, the queue is wait-free or lock-free.
See documentation for details.
To use the atomic ring buffer library in your project, add the following to Cargo.toml
:
toml
[dependencies]
atomic_ring_buffer = "1.0"
std
The std
feature enables use std::boxed::Box
and std::vec::Vec
for the backing storage.
This feature is enabled by default.
alloc
The alloc
feature enables use of alloc::boxed::Box
for the backing storage.
This only works on nightly rustc.
collections
The collections
feature enables use of collections::vec::Vec
for the backing storage.
This only works on nightly rustc.
const_fn
The const_fn
feature marks the AtomicRingBuffer::new
function as constant, permitting
static initialization akin to:
rust
static UART_BUFFER: AtomicRingBuffer = AtomicRingBuffer::new([u8; 32]);
This only works on nightly rustc.
atomic ring buffer is distributed under the terms of 0-clause BSD license.
See LICENSE-0BSD for details.