GRSISort
Created by P.C. Bender
Developement Team: P.C. Bender, R. Dunlop, V. Bildstein
An extension of the ROOT analysis Framework
ThreadsafeQueue< T > Class Template Reference

template<typename T>
class ThreadsafeQueue< T >

Template for all queues used to send data from one thread/loop to the next.

Definition at line 27 of file ThreadsafeQueue.h.

Public Member Functions

 ThreadsafeQueue (std::string name="default", size_t maxSize=100000)
 
 ~ThreadsafeQueue ()
 
bool IsFinished () const
 
size_t ItemsPopped () const
 
size_t ItemsPushed () const
 
std::string Name ()
 
long Pop (T &output, int millisecond_wait=1000)
 
int Push (T obj)
 
void SetFinished (bool finished=true)
 
size_t Size () const
 

Private Attributes

std::condition_variable can_pop
 
std::condition_variable can_push
 
std::string fName
 
std::atomic_bool is_finished
 
size_t items_in_queue
 
size_t items_popped
 
size_t items_pushed
 
size_t max_queue_size
 
std::mutex mutex
 
std::atomic_int num_writers {0}
 
std::queue< T > queue
 

#include <ThreadsafeQueue.h>

+ Collaboration diagram for ThreadsafeQueue< T >:

Constructor & Destructor Documentation

◆ ThreadsafeQueue()

template<typename T >
ThreadsafeQueue< T >::ThreadsafeQueue ( std::string  name = "default",
size_t  maxSize = 100000 
)

Definition at line 67 of file ThreadsafeQueue.h.

◆ ~ThreadsafeQueue()

template<typename T >
ThreadsafeQueue< T >::~ThreadsafeQueue ( )
default

Member Function Documentation

◆ IsFinished()

template<typename T >
bool ThreadsafeQueue< T >::IsFinished ( ) const

Definition at line 137 of file ThreadsafeQueue.h.

◆ ItemsPopped()

template<typename T >
size_t ThreadsafeQueue< T >::ItemsPopped ( ) const

Definition at line 130 of file ThreadsafeQueue.h.

◆ ItemsPushed()

template<typename T >
size_t ThreadsafeQueue< T >::ItemsPushed ( ) const

Definition at line 123 of file ThreadsafeQueue.h.

◆ Name()

template<typename T >
std::string ThreadsafeQueue< T >::Name ( )
inline

Definition at line 39 of file ThreadsafeQueue.h.

References ThreadsafeQueue< T >::fName.

◆ Pop()

template<typename T >
long ThreadsafeQueue< T >::Pop ( T &  output,
int  millisecond_wait = 1000 
)

Definition at line 93 of file ThreadsafeQueue.h.

◆ Push()

template<typename T >
int ThreadsafeQueue< T >::Push ( obj)

Definition at line 77 of file ThreadsafeQueue.h.

◆ SetFinished()

template<typename T >
void ThreadsafeQueue< T >::SetFinished ( bool  finished = true)

Definition at line 143 of file ThreadsafeQueue.h.

◆ Size()

template<typename T >
size_t ThreadsafeQueue< T >::Size ( ) const

Definition at line 116 of file ThreadsafeQueue.h.

Member Data Documentation

◆ can_pop

template<typename T >
std::condition_variable ThreadsafeQueue< T >::can_pop
private

Definition at line 51 of file ThreadsafeQueue.h.

◆ can_push

template<typename T >
std::condition_variable ThreadsafeQueue< T >::can_push
private

Definition at line 50 of file ThreadsafeQueue.h.

◆ fName

template<typename T >
std::string ThreadsafeQueue< T >::fName
private

Definition at line 47 of file ThreadsafeQueue.h.

Referenced by ThreadsafeQueue< T >::Name().

◆ is_finished

template<typename T >
std::atomic_bool ThreadsafeQueue< T >::is_finished
private

Definition at line 61 of file ThreadsafeQueue.h.

◆ items_in_queue

template<typename T >
size_t ThreadsafeQueue< T >::items_in_queue
private

Definition at line 57 of file ThreadsafeQueue.h.

◆ items_popped

template<typename T >
size_t ThreadsafeQueue< T >::items_popped
private

Definition at line 59 of file ThreadsafeQueue.h.

Referenced by pygui.status_widget.ThreadVars::Update().

◆ items_pushed

template<typename T >
size_t ThreadsafeQueue< T >::items_pushed
private

Definition at line 58 of file ThreadsafeQueue.h.

Referenced by pygui.status_widget.ThreadVars::Update().

◆ max_queue_size

template<typename T >
size_t ThreadsafeQueue< T >::max_queue_size
private

Definition at line 55 of file ThreadsafeQueue.h.

◆ mutex

template<typename T >
std::mutex ThreadsafeQueue< T >::mutex
mutableprivate

Definition at line 48 of file ThreadsafeQueue.h.

◆ num_writers

template<typename T >
std::atomic_int ThreadsafeQueue< T >::num_writers {0}
private

Definition at line 53 of file ThreadsafeQueue.h.

◆ queue

template<typename T >
std::queue<T> ThreadsafeQueue< T >::queue
private

Definition at line 49 of file ThreadsafeQueue.h.