xenium
|
An unbounded lock-free multi-producer/multi-consumer queue. More...
#include <nikolaev_queue.hpp>
Public Member Functions | |
void | push (value_type value) |
Pushes the given value. More... | |
bool | try_pop (value_type &result) |
Tries to pop an element from the queue. More... | |
An unbounded lock-free multi-producer/multi-consumer queue.
This implementation is based on the unbounded MPMC queue proposed by Nikolaev [Nik19].
The nikoleav_queue provides lock-free progress guarantee under the condition that the number of threads concurrently operating on the queue is less than the capacity of a node (see entries_per_node
policy).
Supported policies:
xenium::policy::reclaimer
xenium::policy::entries_per_node
xenium::policy::pop_retries
T | |
Policies | list of policies to customize the behaviour |
void xenium::nikolaev_queue< T, Policies >::push | ( | value_type | value | ) |
Pushes the given value.
Progress guarantees: lock-free
value |
bool xenium::nikolaev_queue< T, Policies >::try_pop | ( | value_type & | result | ) |
Tries to pop an element from the queue.
Progress guarantees: lock-free
result |
true
if the operation was successful, otherwise false