基於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 };