这种情况一般多个线程读是不需要加锁的。就在写的时候需要加锁。
那么要做的就是让不写的时候,读不受同步限制。让多线程自由的读。
这个时候就要用读写锁
boost已经有读写锁,而c++ 14才有读写锁。
std::shared_mutex write; //use boost‘s or c++14 // One write, no reads. void write_fun() { std::lock_guard<std::shared_mutex> lock(write); // DO WRITE } // Multiple reads, no write void read_fun() { std::shared_lock<std::shared_mutex> lock(write); // do read }
时间: 2024-10-18 22:34:27