1、shared_mutex
bost库中C++互斥锁(互斥量)封装在shared_mutex类中.
namespace boost
{
class shared_mutex
{
//......
}
}
2、shared_lock(共享锁-读锁)
共享性
shared_lock一般是作为read_lock。被锁后仍允许其他线程执行同样 被 shared_lock 的代码。这是一般做读操作时的需要;
shared_lock:共享锁,也叫多线程锁,当data被一个线程读取时,仍允许其它线程读取数据,但是不能写入操作。
boost::shared_mutex lock;
boost::shared_lock<boost::shared_mutex> mylock1(lock);
//读(获取)操作使用这把锁
//......code
3、unique_lock(独占锁-写锁)
排他性
unique_lock一般是作为write_lock。被锁后不允许其他线程执行 被 shared_lock 或 unique_lock 的代码。在写操作时,一般用这个,可以同时限制unique_lock的写和share_lock的读;
unique_lock:独占锁,也叫单线程锁,仅允许单个线程访问,该线程访问结束后,其它线程才可以访问,避免输入写入冲突。当数据被一个线程写入时,其它线程既不能读取操作也不能写入操作。
boost::shared_mutex lock;
boost::unique_lock<boost::shared_mutex> mylock2(lock);
//写(添加、删除、修改)操作使用这把锁
//......code
4、unlock(解锁)
析构时 执行mutex_.unlock();自动解锁