13 mutable std::mutex m_mutex;
14 std::deque<T> m_queue;
23 std::lock_guard<std::mutex> lock(m_mutex);
24 if (m_queue.empty()) {
27 out = std::move(m_queue.front());
33 std::lock_guard<std::mutex> lock(m_mutex);
36 template <
typename... Args>
37 void emplace(Args&&... args)
39 std::lock_guard<std::mutex> lock(m_mutex);
40 m_queue.emplace_back(std::forward<Args>(args)...);
47 std::lock_guard<std::mutex> lock(m_mutex);
48 return m_queue.empty();