大家多多指正哈~
https://github.com/fishCi/c11/blob/master/rwlock.cpp
#include<thread>
#include<mutex>
#include<iostream>
#include<unistd.h>
#include<condition_variable>
using namespace std;
class rwlock {
private:
mutex _lock;
condition_variable _wcon, _rcon;
unsigned _writer, _reader;
int _active;
public:
void read_lock() {
unique_lock<mutex> lock(_lock);
++_reader;
while(_active < 0 || _writer > 0)
_rcon.wait(lock);
--_reader;
++_active;
}
void write_lock() {
unique_lock<mutex> lock(_lock);
++_writer;
while(_active != 0)
_wcon.wait(lock);
--_writer;
_active = -1;
}
void unlock() {
unique_lock<mutex> lock