c++ 多个线程读一个线程写同步
这种情况一般多个线程读是不需要加锁的。就在写的时候需要加锁。
那么要做的就是让不写的时候,读不受同步限制。让多线程自由的读。
这个时候就要用读写锁
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
}
本文探讨了在C++中如何通过读写锁处理多个线程同时读取和写入的情况,避免了不必要的同步限制,重点介绍了boost库的read_write_lock以及C++14标准的实现方式。
432

被折叠的 条评论
为什么被折叠?



