Signapse
Public Member Functions | List of all members
BlockingQueue< T > Class Template Reference

BlockingQueue Class. More...

#include <BlockingQueue.h>

Inheritance diagram for BlockingQueue< T >:
Inheritance graph
Collaboration diagram for BlockingQueue< T >:
Collaboration graph

Public Member Functions

void Push (T toPush)
 
Pop ()
 
bool IsEmpty ()
 
int Size ()
 

Detailed Description

template<typename T>
class BlockingQueue< T >

BlockingQueue Class.

Class to wrap around std::deque and block thread execution when no data is available at the output.

Template Parameters
TType of elements in the queue

Definition at line 23 of file BlockingQueue.h.

Member Function Documentation

◆ IsEmpty()

template<typename T >
bool BlockingQueue< T >::IsEmpty
Template Parameters
T
Returns
true if internal queue empty, false otherwise

Definition at line 24 of file BlockingQueue.cpp.

24 {
25 return internalQueue.empty();
26}

◆ Pop()

template<typename T >
T BlockingQueue< T >::Pop

Pop method, uses mutex lock to sleep the current thread until data are available on the queue. This may be used to synchonise and schedule threads.

Template Parameters
T
Returns
Element on deque back

Definition at line 11 of file BlockingQueue.cpp.

11 {
12 std::unique_lock<std::mutex> lock(mutex);
13 condition.wait(lock, [=]{ return !internalQueue.empty(); });
14 T ret = internalQueue.back();
15 internalQueue.pop_back();
16 return ret;
17}

◆ Push()

template<typename T >
void BlockingQueue< T >::Push ( toPush)

adds element to the queue.

Template Parameters
T
Parameters
toPush

Definition at line 44 of file BlockingQueue.cpp.

44 {
45 {
46 internalQueue.push_front(toPush);
47 }
48 condition.notify_all();
49}

◆ Size()

template<typename T >
int BlockingQueue< T >::Size

Gets the current length of elements in the queue.

Template Parameters
T
Returns
size of internal deque

Definition at line 34 of file BlockingQueue.cpp.

34 {
35 return internalQueue.size();
36}

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