19 template <
typename TType>
27 mutable std::mutex _mutex;
28 std::deque<TType> _queue;
37 std::lock_guard<std::mutex> lock(_mutex);
38 _queue.push_back(std::move(p_value));
47 std::lock_guard<std::mutex> lock(_mutex);
48 _queue.push_back(p_value);
58 std::lock_guard<std::mutex> lock(_mutex);
59 if (_queue.empty() ==
true)
61 throw std::runtime_error(
"Can't popFront an empty ThreadSafeQueue");
63 TType out = std::move(_queue.front());
75 std::lock_guard<std::mutex> lock(_mutex);
76 if (_queue.empty() ==
true)
78 throw std::runtime_error(
"Can't popBack an empty ThreadSafeQueue");
80 TType out = std::move(_queue.back());
91 std::lock_guard<std::mutex> lock(_mutex);
92 return _queue.empty();
Minimal mutex-protected FIFO deque wrapper.
Definition spk_thread_safe_queue.hpp:21
bool empty() const noexcept
Checks whether the queue is empty.
Definition spk_thread_safe_queue.hpp:89
TType popBack()
Pops the back element.
Definition spk_thread_safe_queue.hpp:73
TType popFront()
Pops the front element.
Definition spk_thread_safe_queue.hpp:56
void insert(TType &&p_value)
Inserts a new element by move.
Definition spk_thread_safe_queue.hpp:35
void insert(const TType &p_value)
Inserts a new element by copy.
Definition spk_thread_safe_queue.hpp:45
TType value_type
Element type stored by the queue.
Definition spk_thread_safe_queue.hpp:24