Foundation
Loading...
Searching...
No Matches
Classes | Public Member Functions | Private Attributes | List of all members
Foundation::Atomics::MPMCQueue< T > Class Template Reference

Atomic, bounded multi-producer multi-consumer FIFO ring buffer with a fixed maximum size. More...

#include <Queue.hpp>

Classes

struct  Data
 
class  Reader
 
class  Writer
 

Public Member Functions

 MPMCQueue (size_t size, Allocator *alloc)
 
Writer CreateWriter ()
 Create a Writer for concurrent pushing.
 
Reader CreateReader ()
 Create a Reader for concurrent popping.
 

Private Attributes

const size_t mModulo
 
const size_t mShift
 
Vector< DatamBuffer
 
Atomic< size_tmRead {}
 
Atomic< size_tmWrite {}
 
size_t mWriteCached {}
 

Detailed Description

template<typename T>
class Foundation::Atomics::MPMCQueue< T >

Atomic, bounded multi-producer multi-consumer FIFO ring buffer with a fixed maximum size.

Template Parameters
TData type.

Constructor & Destructor Documentation

◆ MPMCQueue()

template<typename T >
Foundation::Atomics::MPMCQueue< T >::MPMCQueue ( size_t  size,
Allocator alloc 
)
inline

Member Function Documentation

◆ CreateReader()

template<typename T >
Reader Foundation::Atomics::MPMCQueue< T >::CreateReader ( )
inline

Create a Reader for concurrent popping.

◆ CreateWriter()

template<typename T >
Writer Foundation::Atomics::MPMCQueue< T >::CreateWriter ( )
inline

Create a Writer for concurrent pushing.

Member Data Documentation

◆ mBuffer

template<typename T >
Vector<Data> Foundation::Atomics::MPMCQueue< T >::mBuffer
private

◆ mModulo

template<typename T >
const size_t Foundation::Atomics::MPMCQueue< T >::mModulo
private

◆ mRead

template<typename T >
Atomic<size_t> Foundation::Atomics::MPMCQueue< T >::mRead {}
private

◆ mShift

template<typename T >
const size_t Foundation::Atomics::MPMCQueue< T >::mShift
private

◆ mWrite

template<typename T >
Atomic<size_t> Foundation::Atomics::MPMCQueue< T >::mWrite {}
private

◆ mWriteCached

template<typename T >
size_t Foundation::Atomics::MPMCQueue< T >::mWriteCached {}
private

The documentation for this class was generated from the following file: