Clearmatics Libff  0.1
C++ library for Finite Fields and Elliptic Curves
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
libff::concurrent_buffer_fifo_spsc< T > Class Template Reference

#include <concurrent_fifo.hpp>

Collaboration diagram for libff::concurrent_buffer_fifo_spsc< T >:
Collaboration graph
[legend]

Public Member Functions

 concurrent_buffer_fifo_spsc ()=delete
 
 concurrent_buffer_fifo_spsc (const concurrent_buffer_fifo_spsc &)=delete
 
concurrent_buffer_fifo_spscoperator= (const concurrent_buffer_fifo_spsc &)=delete
 
 concurrent_buffer_fifo_spsc (size_t num_buffers, size_t num_entries_per_buffer)
 
 ~concurrent_buffer_fifo_spsc ()
 
T * try_enqueue_begin ()
 
T * enqueue_begin_wait ()
 
void enqueue_end ()
 
const T * try_dequeue_begin ()
 
const T * dequeue_begin_wait ()
 
void dequeue_end ()
 

Protected Member Functions

T * enqueue_next_buffer (T **const buffer_ptr)
 

Protected Attributes

concurrent_fifo_spsc< T * > _queue
 
const size_t _entries_per_buffer
 
T **const _buffers
 
size_t _next_buffer_idx
 

Detailed Description

template<typename T>
class libff::concurrent_buffer_fifo_spsc< T >

Similar semantics as concurrent_fifo_spsc, but entries are pre-allocated flat arrays of some runtime-determined size. Can be used to reduce contention on the fifo (en/dequeue chunks) or to operate on logical units.

Definition at line 72 of file concurrent_fifo.hpp.

Constructor & Destructor Documentation

◆ concurrent_buffer_fifo_spsc() [1/3]

template<typename T >
libff::concurrent_buffer_fifo_spsc< T >::concurrent_buffer_fifo_spsc ( )
delete

◆ concurrent_buffer_fifo_spsc() [2/3]

◆ concurrent_buffer_fifo_spsc() [3/3]

template<typename T >
libff::concurrent_buffer_fifo_spsc< T >::concurrent_buffer_fifo_spsc ( size_t  num_buffers,
size_t  num_entries_per_buffer 
)

◆ ~concurrent_buffer_fifo_spsc()

Member Function Documentation

◆ dequeue_begin_wait()

template<typename T >
const T* libff::concurrent_buffer_fifo_spsc< T >::dequeue_begin_wait ( )

◆ dequeue_end()

template<typename T >
void libff::concurrent_buffer_fifo_spsc< T >::dequeue_end ( )

◆ enqueue_begin_wait()

template<typename T >
T* libff::concurrent_buffer_fifo_spsc< T >::enqueue_begin_wait ( )

◆ enqueue_end()

template<typename T >
void libff::concurrent_buffer_fifo_spsc< T >::enqueue_end ( )

◆ enqueue_next_buffer()

template<typename T >
T* libff::concurrent_buffer_fifo_spsc< T >::enqueue_next_buffer ( T **const  buffer_ptr)
protected

◆ operator=()

template<typename T >
concurrent_buffer_fifo_spsc& libff::concurrent_buffer_fifo_spsc< T >::operator= ( const concurrent_buffer_fifo_spsc< T > &  )
delete

◆ try_dequeue_begin()

template<typename T >
const T* libff::concurrent_buffer_fifo_spsc< T >::try_dequeue_begin ( )

Similar to concurrent_fifo_spsc::try_dequeue_begin(), except that the returned value points to an array of num_entries_per_buffer.

◆ try_enqueue_begin()

template<typename T >
T* libff::concurrent_buffer_fifo_spsc< T >::try_enqueue_begin ( )

Similar to concurrent_fifo_spsc::try_enqueue_begin(), except that the returned value points to an array of num_entries_per_buffer.

Member Data Documentation

◆ _buffers

template<typename T >
T** const libff::concurrent_buffer_fifo_spsc< T >::_buffers
protected

Definition at line 105 of file concurrent_fifo.hpp.

◆ _entries_per_buffer

template<typename T >
const size_t libff::concurrent_buffer_fifo_spsc< T >::_entries_per_buffer
protected

Definition at line 104 of file concurrent_fifo.hpp.

◆ _next_buffer_idx

template<typename T >
size_t libff::concurrent_buffer_fifo_spsc< T >::_next_buffer_idx
protected

Definition at line 106 of file concurrent_fifo.hpp.

◆ _queue

template<typename T >
concurrent_fifo_spsc<T *> libff::concurrent_buffer_fifo_spsc< T >::_queue
protected

Definition at line 103 of file concurrent_fifo.hpp.


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