读写锁实现

 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 };
出自datakv
原文地址:https://www.cnblogs.com/datakv/p/5607740.html