libfly  6.2.2
C++20 utility library for Linux, macOS, and Windows
concurrent_queue.hpp
1 #pragma once
2 
3 #include "fly/types/concurrency/detail/concurrent_container.hpp"
4 
5 #include <queue>
6 
7 namespace fly {
8 
15 template <typename T>
16 class ConcurrentQueue : public detail::ConcurrentContainer<T, std::queue<T>>
17 {
18 protected:
19  void push_internal(T &&) override;
20  void pop_internal(T &) override;
21 };
22 
23 //==================================================================================================
24 template <typename T>
26 {
27  this->m_container.push(std::move(item));
28 }
29 
30 //==================================================================================================
31 template <typename T>
33 {
34  item = std::move(this->m_container.front());
35  this->m_container.pop();
36 }
37 
38 } // namespace fly
Definition: concurrent_queue.hpp:17
void pop_internal(T &) override
Definition: concurrent_queue.hpp:32
void push_internal(T &&) override
Definition: concurrent_queue.hpp:25
Definition: concurrent_container.hpp:17