這種情況一般多個線程讀是不需要加鎖的。就在寫的時候需要加鎖。
那么要做的就是讓不寫的時候,讀不受同步限制。讓多線程自由的讀。
這個時候就要用讀寫鎖
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 }
