Linux多线程服务端编程(muduo):互斥锁(mutex)的使用原则

单独使用互斥锁时,可以遵循一些原则:

(1)用RAII手法(资源获取时就是初始化,在构造函数中创建对象,在析构函数中销毁对象)封装mutex的创建,销毁,加锁,解锁。

(2)只用非递归的mutex(即不可重入的mutex,当一个线程已获得锁时,其他线程阻塞的时候,不允许该线程获得锁两次。)

(3)不手工调用lock()和unlock()函数,一切交给栈上的Guard对象的构造函数和析构函数负责。

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

次要原则:

1,不适用跨进程的mutex,进程间通信只用TCP sockets

2,加锁,解锁在同一个线程。线程a不能去unlock线程b已经锁住的mutex。(RAII自动保证)

3,别忘了解锁(RAII自动保证)

4, 不重复解锁(RAII自动保证)

5,必要的时候可以考虑用PTHREAD_MUTEX_ERRORCHECK来排错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值