Tervel
1.0.0
A collection of wait-free containers and algorithms.
|
#include <mcas_buffer.h>
Public Member Functions | |
RingBuffer (uint64_t s) | |
~RingBuffer () | |
bool | enqueue (T value) |
bool | dequeue (T &value) |
bool | is_empty () |
bool | is_full () |
size_t | capacity () |
void | print_queue () |
Private Member Functions | |
Node< T > * | at (uint64_t pos) |
std::atomic< Node< T > * > * | address (uint64_t pos) |
uint64_t | head () |
uint64_t | head (uint64_t i) |
uint64_t | tail () |
uint64_t | tail (uint64_t i) |
bool | enqueue (Node< T > *node) |
Node< T > * | dequeue () |
enqueue More... | |
Private Attributes | |
const uint64_t | capacity_ |
std::atomic< uint64_t > | head_ |
std::atomic< uint64_t > | tail_ |
std::unique_ptr< std::atomic< Node< T > * >[]> | buff_ |
Node< T > * | c_not_value = reinterpret_cast<Node<T> *>(0x0L) |
Node< T > * | c_head_value = reinterpret_cast<Node<T> *>(0x10L) |
Node< T > * | c_tail_value = reinterpret_cast<Node<T> *>(0x20L) |
|
inlineexplicit |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inline |
bool tervel::containers::lf::mcas_buffer::RingBuffer< T >::dequeue | ( | T & | value | ) |
|
inlineprivate |
enqueue
bool tervel::containers::lf::mcas_buffer::RingBuffer< T >::enqueue | ( | T | value | ) |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |