3.3.2.29. Template Class ConcurrentQueue¶
- Defined in File concurrent_queue.h
3.3.2.29.1. Class Documentation¶
-
template <typename T>
classConcurrentQueue
¶ Concurrent queue.
ConcurrentQueue is a basic thread safe implementation of a queue. ConcurrentQueue has a limited size. Push and Pop methods can be used in a multi-threaded context.
This implementation is inspired by https://juanchopanzacpp.wordpress.com/2013/02/26/concurrent-queue-c11
- Warning
- Push and Pop methods may block.
Public Functions
-
ConcurrentQueue
(std::size_t max_queue_size = 10)¶ Instanciate a concurrent queue with a maximum size.
The queue is active after instantiation
- Parameters
max_queue_size
: limit the queue size
-
~ConcurrentQueue
()¶
-
ConcurrentQueue
(const ConcurrentQueue&)¶
-
ConcurrentQueue &
operator=
(const ConcurrentQueue&)¶
-
ConcurrentQueue
(ConcurrentQueue&&)¶
-
ConcurrentQueue &
operator=
(ConcurrentQueue&&)¶
-
void
Push
(T &&element, std::error_code &ec)¶ Push an element in the queue.
- Warning
- This method may block until there is an available spot
- Warning
- If the queue is not active, the element will be dropped and ec is set
- Parameters
element
: to push to the queueec
: return status
-
T
Pop
(std::error_code &ec)¶ Pop an element from the queue.
- Return
- An available element from the queue
- Warning
- This method may block until there is an element to pop
- Warning
- If no element is available and the queue is not active, this method returns a default constructed element and ec is set
- Parameters
ec
: return status
-
std::size_t
Size
()¶ Get queue size.
- Return
- Queue size
-
bool
Empty
()¶ Queue is empty.
- Return
- true if queue is empty
-
bool
CanPop
()¶ Elements can be popped from the queue.
- Return
- boolean
-
void
Activate
()¶ Activate the queue.
The queue will be able to receive new elements
-
void
Deactivate
()¶ Deactivate the queue.
The queue will not be able to receive new elements
-
void
DeactivateAndClear
()¶ Deactivate the queue and clear its content.
The queue will not be able to receive new elements and its content will be erased
-
bool
IsActive
()¶ Can the queue be filled with new elements.
- Return
- true if the queue is still active