C++14实现了读写锁:
通过shared_lock<shared_timed_mutex>可以创建读锁
通过unique_lock<shared_timed_mutex>可以创建写锁
多个读锁可以同时运行,但是如果写锁被加锁了,那么其他写锁或读锁都会被阻塞
#include <shared_mutex>
#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
shared_timed_mutex sLock;
int data = 10;
unsigned long getTime()
{
return chrono::system_clock::now().time_since_epoch().count()/chrono::system_clock::period::den;
}
void read_shared_data(int id)
{
cout << getTime() << " thread "<< id << " begin" << endl;
shared_lock<shared_timed_mutex> slk(sLock);
cout << getTime() << " thread " << id << " read data=" << data << endl;
}
int main()
{
shared_lock<shared_timed_mutex> slk(sLock); //读锁加锁
cout << getTime() << " shared_lock locked"<&