線程安全隊列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 };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM