GRSISort "v4.0.0.5"
An extension of the ROOT analysis Framework
Loading...
Searching...
No Matches
ThreadsafeQueue< T > Class Template Reference

Detailed Description

template<typename T>
class ThreadsafeQueue< T >

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

Definition at line 28 of file ThreadsafeQueue.h.

Public Member Functions

 ThreadsafeQueue (const ThreadsafeQueue &)=default
 
 ThreadsafeQueue (std::string name="default", size_t maxSize=100000)
 
 ThreadsafeQueue (ThreadsafeQueue &&) noexcept=default
 
 ~ThreadsafeQueue ()=default
 
bool IsFinished () const
 
size_t ItemsPopped () const
 
size_t ItemsPushed () const
 
std::string Name ()
 
ThreadsafeQueueoperator= (const ThreadsafeQueue &)=default
 
ThreadsafeQueueoperator= (ThreadsafeQueue &&) noexcept=default
 
size_t 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 {0}
 
size_t items_popped {0}
 
size_t items_pushed {0}
 
size_t max_queue_size {100000}
 
std::mutex mutex
 
std::atomic_int num_writers {0}
 
std::queue< T > queue
 
+ Collaboration diagram for ThreadsafeQueue< T >:

Constructor & Destructor Documentation

◆ ThreadsafeQueue() [1/3]

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

Definition at line 72 of file ThreadsafeQueue.h.

◆ ThreadsafeQueue() [2/3]

template<typename T >
ThreadsafeQueue< T >::ThreadsafeQueue ( const ThreadsafeQueue< T > & )
default

◆ ThreadsafeQueue() [3/3]

template<typename T >
ThreadsafeQueue< T >::ThreadsafeQueue ( ThreadsafeQueue< T > && )
defaultnoexcept

◆ ~ThreadsafeQueue()

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

Member Function Documentation

◆ IsFinished()

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

Definition at line 138 of file ThreadsafeQueue.h.

◆ ItemsPopped()

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

Definition at line 131 of file ThreadsafeQueue.h.

◆ ItemsPushed()

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

Definition at line 124 of file ThreadsafeQueue.h.

◆ Name()

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

Definition at line 44 of file ThreadsafeQueue.h.

References ThreadsafeQueue< T >::fName.

◆ operator=() [1/2]

template<typename T >
ThreadsafeQueue & ThreadsafeQueue< T >::operator= ( const ThreadsafeQueue< T > & )
default

◆ operator=() [2/2]

template<typename T >
ThreadsafeQueue & ThreadsafeQueue< T >::operator= ( ThreadsafeQueue< T > && )
defaultnoexcept

◆ Pop()

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

Definition at line 94 of file ThreadsafeQueue.h.

◆ Push()

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

Definition at line 78 of file ThreadsafeQueue.h.

◆ SetFinished()

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

Definition at line 144 of file ThreadsafeQueue.h.

◆ Size()

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

Definition at line 117 of file ThreadsafeQueue.h.

Member Data Documentation

◆ can_pop

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

Definition at line 56 of file ThreadsafeQueue.h.

◆ can_push

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

Definition at line 55 of file ThreadsafeQueue.h.

◆ fName

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

Definition at line 52 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 66 of file ThreadsafeQueue.h.

◆ items_in_queue

template<typename T >
size_t ThreadsafeQueue< T >::items_in_queue {0}
private

Definition at line 62 of file ThreadsafeQueue.h.

◆ items_popped

template<typename T >
size_t ThreadsafeQueue< T >::items_popped {0}
private

Definition at line 64 of file ThreadsafeQueue.h.

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

◆ items_pushed

template<typename T >
size_t ThreadsafeQueue< T >::items_pushed {0}
private

Definition at line 63 of file ThreadsafeQueue.h.

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

◆ max_queue_size

template<typename T >
size_t ThreadsafeQueue< T >::max_queue_size {100000}
private

Definition at line 60 of file ThreadsafeQueue.h.

◆ mutex

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

Definition at line 53 of file ThreadsafeQueue.h.

◆ num_writers

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

Definition at line 58 of file ThreadsafeQueue.h.

◆ queue

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

Definition at line 54 of file ThreadsafeQueue.h.