基于std::queue封装一个精简版线程安全的队列,便于以后在多线程应用中使用。
1 #pragma once 2 #include <queue> 3 #include “Mutex.h” 4 5 template<class T> 6 class concurrentQueue 7 { 8 public: 9 concurrentQueue(){} 10 11 void push(const T& x) 12 { 13 MutexLockGuard lock(_mutex); 14 _qu.push(x); 15 } 16 17 void pop(T& x) 18 { 19 MutexLockGuard lock(_mutex); 20 x = _qu.front(); 21 _qu.pop(); 22 } 23 24 void clear() 25 { 26 MutexLockGuard lock(_mutex); 27 while(!_qu.empty()) 28 _qu.pop(); 29 } 30 31 bool empty() 32 { 33 MutexLockGuard lock(_mutex); 34 return _qu.empty(); 35 } 36 37 size_t size() 38 { 39 MutexLockGuard lock(_mutex); 40 return _qu.size(); 41 } 42 43 private: 44 std::queue<T> _qu; 45 MutexLock _mutex; 46 };