Linux多线程C++工具库:liblmp_tool -- RAII手法封装互斥锁MutexLock

本文介绍了Linux多线程编程工具库liblmp_tool,重点阐述如何使用RAII封装互斥锁MutexLock,包括创建、销毁、加锁和解锁操作。提倡只使用非递归mutex,通过Guard对象自动管理锁的生命周期,避免死锁,并提供相关类的实现示例。

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

Linux多线程编程工具库liblmp_tool   github: https://github.com/Dwyane05/liblmp_tool

互斥锁(mutex)恐怕是使用得最多的同步原语,粗略地说,它保护了临界区,任何一个时刻最多只能有一个线程在此mutex划出的临界区内活动。单独使用mutex时,我们主要为了保护共享数据。

个人的原则是:
·用RAII手法封装mutex的创建、销毁、加锁、解锁这四个操作。用RAII封装这几个操作是通行的做法,这几乎是C++的标准实践。

·只用非递归的mutex(即不可重入的mutex)。
·不手工调用lock()和unlock()函数,一切交给栈上的Guard对象的构造和析构函数负责。Guard对象的生命期正好等于临界区(分析对象在什么时候析构是C++程序员的基本功)。

·在每次构造Guard对象的时候,思考一路上(调用栈上)已经持有的锁,防止因加锁顺序不同而导致死锁(deadlock)。

次要原则有:
·不使用跨进程的mutex,进程间通信只用TCP sockets。
·加锁、解锁在同一个线程,线程a不能去unlock线程b已经锁住的mutex(RAII自动保证)。
·别忘了解锁(RAII自动保证)。
·不重复解锁(RAII自动保证)。
·必要的时候可以考虑用PTHREAD_MUTEX_ERRORCH

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dwyane05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值