Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <typename TMessage>
- class concurrent_message_queue final
- {
- public:
- static_assert(std::is_same<TMessage, std::decay_t<TMessage>>::value, "only decayed type assumed");
- size_t push(TMessage&& message)
- {
- std::lock_guard<std::mutex> lock(m_mutex);
- m_queue.push_back(std::move(message));
- return m_queue.size();
- }
- std::vector<TMessage> pull()
- {
- std::vector<TMessage> result;
- {
- std::lock_guard<std::mutex> lock(m_mutex);
- std::swap(result, m_queue);
- }
- return result;
- }
- private:
- std::mutex m_mutex;
- std::vector<TMessage> m_queue;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement