(boost)多线程读写锁(shared_lock、unique_lock)

文章介绍了Boost库中的shared_mutex类,它封装了C++的互斥锁。shared_lock用于读锁,允许多个线程同时进行读操作,而unique_lock则作为写锁,提供独占访问,确保写操作的安全。在资源的读写操作中,shared_mutex和相应的lock对象确保了线程安全,unique_lock在析构时会自动解锁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();自动解锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值