MarlinMT
0.1.0
|
#include <Queue.h>
Public Member Functions | |
Queue ()=default | |
~Queue ()=default | |
Queue (const Queue &)=delete | |
Queue & | operator= (const Queue &)=delete |
Queue (std::size_t maxsize) | |
Constructor. More... | |
bool | push (T &value) |
Push a value to the queue. More... | |
bool | pop (T &value) |
Pop and get the front element in the queue. More... | |
bool | empty () const |
Whether the queue is empty. More... | |
std::size_t | maxSize () const |
Get the maximum queue size. More... | |
std::size_t | setMaxSize (std::size_t maxsize) |
Set the maximum queue size. More... | |
bool | isFull () const |
Check whether the queue has reached the maximum allowed size. More... | |
void | clear () |
Clear the queue. More... | |
std::size_t | freeSlots () const |
Get the number of free slots in the queue. More... | |
Private Attributes | |
std::queue< T > | _queue {} |
The underlying queue object. More... | |
std::mutex | _mutex {} |
The synchronization mutex. More... | |
std::size_t | _maxSize {std::numeric_limits<std::size_t>::max()} |
The maximum size of the queue. More... | |
Queue class.
A simplified thread safe queue container. Support maximum size setting. The type T must implement move assignement
|
default |
|
default |
|
delete |
|
inline |
|
inline |
Clear the queue.
Definition at line 110 of file Queue.h.
Referenced by marlinmt::concurrency::ThreadPool< InputType, OutputType >::clearQueue(), and marlinmt::concurrency::ThreadPool< InputType, OutputType >::stop().
|
inline |
Whether the queue is empty.
Definition at line 73 of file Queue.h.
Referenced by marlinmt::concurrency::ThreadPool< InputType, OutputType >::active(), and marlinmt::concurrency::ThreadPool< InputType, OutputType >::isQueueEmpty().
|
inline |
Get the number of free slots in the queue.
Definition at line 120 of file Queue.h.
Referenced by marlinmt::concurrency::ThreadPool< InputType, OutputType >::freeSlots().
|
inline |
Check whether the queue has reached the maximum allowed size.
Definition at line 102 of file Queue.h.
Referenced by marlinmt::concurrency::ThreadPool< InputType, OutputType >::push().
|
inline |
|
delete |
|
inline |
Pop and get the front element in the queue.
The queue type must support move operation
value | the value to receive |
Definition at line 60 of file Queue.h.
Referenced by marlinmt::concurrency::Worker< IN, OUT >::run().
|
inline |
Push a value to the queue.
WARNING: On success, the element is moved in the queue container, else it is not !
value | the value to push |
Definition at line 45 of file Queue.h.
Referenced by marlinmt::concurrency::ThreadPool< InputType, OutputType >::push().
|
inline |
Set the maximum queue size.
Note that the queue is NOT resized if the new value is smaller than the old size. The value of the old max size is returned
maxsize | the maximum queue size to set |
Definition at line 93 of file Queue.h.
Referenced by marlinmt::concurrency::ThreadPool< InputType, OutputType >::setMaxQueueSize().
|
private |
The maximum size of the queue.
Definition at line 131 of file Queue.h.
Referenced by marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::freeSlots(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::isFull(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::maxSize(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::push(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::Queue(), and marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::setMaxSize().
|
mutableprivate |
The synchronization mutex.
Definition at line 129 of file Queue.h.
Referenced by marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::clear(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::empty(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::freeSlots(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::isFull(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::maxSize(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::pop(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::push(), and marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::setMaxSize().
|
private |
The underlying queue object.
Definition at line 127 of file Queue.h.
Referenced by marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::clear(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::empty(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::freeSlots(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::isFull(), marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::pop(), and marlinmt::concurrency::Queue< QueueElement< InputType, OutputType > >::push().