指尖起舞
手把青秧插满田,低头便见水中天;身心清静方为道,退步原来是向前。

导航

 

 

 1 #include <mutex>
 2 
 3 class readwrite_lock
 4 {
 5 public:
 6     readwrite_lock() : read_cnt(0)
 7     {
 8     }
 9 
10     void readLock()
11     {
12         read_mtx.lock();
13         if (++read_cnt == 1)
14             write_mtx.lock();
15         read_mtx.unlock();
16     }
17 
18     void readUnlock()
19     {
20         read_mtx.lock();
21         if (--read_cnt == 0)
22             write_mtx.unlock();
23         read_mtx.unlock();
24     }
25 
26     void writeLock()
27     {
28         write_mtx.lock();
29     }
30 
31     void writeUnlock()
32     {
33         write_mtx.unlock();
34     }
35 
36 private:
37     mutex read_mtx;
38     mutex write_mtx;
39     int read_cnt; // 已加读锁个数
40 };

 

posted on 2016-06-22 16:49  datakv  阅读(145)  评论(0编辑  收藏  举报