C++14通过shared_timed_mutex提供了读写锁,而C++17通过shared_mutex提供了读写锁。
说实话,除了shared_timed_mutex可以在lock时传递一个timeout_duration作为最长等待时间,本人还没没弄清楚这两个读写锁在使用上有什么明显的区别:
#include <shared_mutex>
#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
shared_mutex sLock;
int g_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_mutex> slk(sLock);
cout << getTime() << " thread " << id << " read data=" << g_data << endl;
}
int main()
{
shared_lock<shared_mutex> slk(sLock); //读锁加锁
cout << getTime() << " shared_lock locked"<<