HiveMindBridge
ThreadSafeQueue.h
Go to the documentation of this file.
1 #ifndef HIVE_MIND_BRIDGE_THREADSAFEQUEUE_H
2 #define HIVE_MIND_BRIDGE_THREADSAFEQUEUE_H
3 
4 #include "IThreadSafeQueue.h"
5 #include <mutex>
6 #include <queue>
7 
8 template <class T>
9 class ThreadSafeQueue : public IThreadSafeQueue<T> {
10  public:
12 
13  void push(const T& item) {
14  std::lock_guard<std::mutex> lock(m_mutex);
15  m_queue.push(item);
16  }
17 
18  void pop() {
19  std::lock_guard<std::mutex> lock(m_mutex);
20  m_queue.pop();
21  }
22 
23  T front() {
24  std::lock_guard<std::mutex> lock(m_mutex);
25  return m_queue.front();
26  }
27 
28  T back() {
29  std::lock_guard<std::mutex> lock(m_mutex);
30  return m_queue.back();
31  }
32 
33  size_t size() {
34  std::lock_guard<std::mutex> lock(m_mutex);
35  return m_queue.size();
36  }
37 
38  bool empty() {
39  std::lock_guard<std::mutex> lock(m_mutex);
40  return m_queue.empty();
41  }
42 
43  private:
44  std::mutex m_mutex;
45  std::queue<T> m_queue;
46 };
47 
48 #endif // HIVE_MIND_BRIDGE_THREADSAFEQUEUE_H
ThreadSafeQueue
Definition: ThreadSafeQueue.h:9
ThreadSafeQueue::m_queue
std::queue< T > m_queue
Definition: ThreadSafeQueue.h:45
ThreadSafeQueue::push
void push(const T &item)
Definition: ThreadSafeQueue.h:13
ThreadSafeQueue::empty
bool empty()
Definition: ThreadSafeQueue.h:38
IThreadSafeQueue
Definition: IThreadSafeQueue.h:5
IThreadSafeQueue.h
ThreadSafeQueue::back
T back()
Definition: ThreadSafeQueue.h:28
ThreadSafeQueue::front
T front()
Definition: ThreadSafeQueue.h:23
ThreadSafeQueue::ThreadSafeQueue
ThreadSafeQueue()
Definition: ThreadSafeQueue.h:11
ThreadSafeQueue::pop
void pop()
Definition: ThreadSafeQueue.h:18
ThreadSafeQueue::size
size_t size()
Definition: ThreadSafeQueue.h:33
ThreadSafeQueue::m_mutex
std::mutex m_mutex
Definition: ThreadSafeQueue.h:44