线程安全队列queue

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

 

posted @ 2018-08-18 19:54  GuoQuanLiu  阅读(1165)  评论(0编辑  收藏  举报