linux中的自动锁(借鉴Mute::AutoLock)

本文介绍了一种在Linux环境下实现自动上锁解锁的方案。针对API层中敏感器件操作需互斥的问题,通过自定义Autolock类,在函数头声明实例自动上锁,函数结束时自动解锁,有效避免遗漏并提高代码优雅度。

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

Linux中实现自动上锁解锁

参考博客如下
https://www.jianshu.com/p/a12738fb0cd5
起因:最近由于遇见一个特别敏感的器件----在对其进行操作的时候不能有其他线程打扰(Nothing is allowed),而在API层的封装中,每个功能函数都几乎涉及了这个器件,也就意味着我API层的所有Public函数都得互斥(ALL),暂时结果就是我需要将相关的所有函数都上同一个互斥锁。
方案:由于每个函数的逻辑不尽相同,而跳转也挺多,挨个的在函数头加锁,函数尾解锁,存在容易加漏的情况,而且我是个有点强迫症的人,这样的代码,不那么优雅啊。我想到了自动锁,也是之前无意看到的Android底层库的Mute::AutoLock。看了其实现之后,利用如下方式实现了AutLock的类,每次在函数头声明一个实例构造的时候调用上锁函数,在函数结束的时候释放实例,同时调用析构函数就
解锁了。

pthread_mutex_t Test::m_mutex = PTHREAD_MUTEX_INITIALIZER;
class Test {
private:
	static pthread_mutex_t m_mutex;
	class Autolock {
	public:
		inline Autolock() {
			pthread_mutex_lock(&m_mutex);
		}
		inline ~Autolock() {
			pthread_mutex_unlock(&m_mutex);
		}
	};
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值