AARE
Data analysis library for PSI hybrid detectors
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Types | Private Attributes
folly::ProducerConsumerQueue< T > Struct Template Reference

#include <ProducerConsumerQueue.hpp>

Public Types

typedef T value_type
 

Public Member Functions

 ProducerConsumerQueue (const ProducerConsumerQueue &)=delete
 
ProducerConsumerQueueoperator= (const ProducerConsumerQueue &)=delete
 
 ProducerConsumerQueue (uint32_t size)
 
 ~ProducerConsumerQueue ()
 
template<class... Args>
bool write (Args &&...recordArgs)
 
bool read (T &record)
 
T * frontPtr ()
 
void popFront ()
 
bool isEmpty () const
 
bool isFull () const
 
size_t sizeGuess () const
 
size_t capacity () const
 

Private Types

using AtomicIndex = std::atomic< unsigned int >
 

Private Attributes

char pad0_ [hardware_destructive_interference_size]
 
const uint32_t size_
 
T *const records_
 
AtomicIndex readIndex_
 
AtomicIndex writeIndex_
 
char pad1_ [hardware_destructive_interference_size - sizeof(AtomicIndex)]
 

Member Typedef Documentation

◆ AtomicIndex

template<class T >
using folly::ProducerConsumerQueue< T >::AtomicIndex = std::atomic<unsigned int>
private

◆ value_type

template<class T >
typedef T folly::ProducerConsumerQueue< T >::value_type

Constructor & Destructor Documentation

◆ ProducerConsumerQueue() [1/2]

template<class T >
folly::ProducerConsumerQueue< T >::ProducerConsumerQueue ( const ProducerConsumerQueue< T > &  )
delete

◆ ProducerConsumerQueue() [2/2]

template<class T >
folly::ProducerConsumerQueue< T >::ProducerConsumerQueue ( uint32_t  size)
inlineexplicit

◆ ~ProducerConsumerQueue()

template<class T >
folly::ProducerConsumerQueue< T >::~ProducerConsumerQueue ( )
inline

Member Function Documentation

◆ capacity()

template<class T >
size_t folly::ProducerConsumerQueue< T >::capacity ( ) const
inline

◆ frontPtr()

template<class T >
T * folly::ProducerConsumerQueue< T >::frontPtr ( )
inline

◆ isEmpty()

template<class T >
bool folly::ProducerConsumerQueue< T >::isEmpty ( ) const
inline

◆ isFull()

template<class T >
bool folly::ProducerConsumerQueue< T >::isFull ( ) const
inline

◆ operator=()

template<class T >
ProducerConsumerQueue & folly::ProducerConsumerQueue< T >::operator= ( const ProducerConsumerQueue< T > &  )
delete

◆ popFront()

template<class T >
void folly::ProducerConsumerQueue< T >::popFront ( )
inline

◆ read()

template<class T >
bool folly::ProducerConsumerQueue< T >::read ( T &  record)
inline

◆ sizeGuess()

template<class T >
size_t folly::ProducerConsumerQueue< T >::sizeGuess ( ) const
inline

◆ write()

template<class T >
template<class... Args>
bool folly::ProducerConsumerQueue< T >::write ( Args &&...  recordArgs)
inline

Field Documentation

◆ pad0_

template<class T >
char folly::ProducerConsumerQueue< T >::pad0_[hardware_destructive_interference_size]
private

◆ pad1_

template<class T >
char folly::ProducerConsumerQueue< T >::pad1_[hardware_destructive_interference_size - sizeof(AtomicIndex)]
private

◆ readIndex_

template<class T >
AtomicIndex folly::ProducerConsumerQueue< T >::readIndex_
private

◆ records_

template<class T >
T* const folly::ProducerConsumerQueue< T >::records_
private

◆ size_

template<class T >
const uint32_t folly::ProducerConsumerQueue< T >::size_
private

◆ writeIndex_

template<class T >
AtomicIndex folly::ProducerConsumerQueue< T >::writeIndex_
private

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