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

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

#include <AtomicQueue.hpp>

Classes

struct  Data
 

Public Member Functions

 MPMCQueue (size_t size, Allocator *alloc)
 
template<typename U >
bool Push (U &&data)
 
bool Pop (T &out)
 

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::Core::MPMCQueue< T >

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

Template Parameters
TData type, must be default constructible.

Constructor & Destructor Documentation

◆ MPMCQueue()

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

Member Function Documentation

◆ Pop()

template<typename T >
bool Foundation::Core::MPMCQueue< T >::Pop ( T out)
inline

◆ Push()

template<typename T >
template<typename U >
bool Foundation::Core::MPMCQueue< T >::Push ( U &&  data)
inline

Member Data Documentation

◆ mBuffer

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

◆ mModulo

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

◆ mRead

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

◆ mShift

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

◆ mWrite

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

◆ mWriteCached

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

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