libevent的锁机制之调试锁的使用

本文介绍了libevent的调试锁启用、调试锁与自定义锁的关系、调试锁的作用,以及通过代码分析了调试锁的分配、释放、锁定和解锁的实现,旨在帮助理解libevent中锁的正确使用和调试。
摘要由CSDN通过智能技术生成

1)调试锁的启用
   evthread_use_pthreads()          //此函数的介绍看我的上一篇博客
   evthread_enable_lock_debugging() //此函数的介绍看下面
   看代码这两个的调用顺序没有硬性要求,从官方文档看为了安全这个调用顺序还是按照这个顺序比较好
   这两个函数必须在使用锁之前被调用,也就是在使用event base之前就先调用此函数
   
2)调试锁和我们定义的锁(linux使用evthread_use_pthreads设置的锁) 有什么关系和不同呢?
  在开启调试锁之后, 当前锁为调试锁保存到evthread_lock_fns_全局变量中,那么我们之前的锁被保存到original_lock_fns_全局
  变量中, 当我们使用调试锁的时候,其实调试锁在做了一些信息保存或信息判断后,最后还会使用original_lock_fns_中我们自己的锁。
  也就是调试锁对我们的锁进行了一层封装,具体如何做的看后面代码分析
  
3)用调试锁用什么用
  可以防止一些锁的错误使用如下
     在一个线程中释放另一个线程上的锁
     重新上锁一个非递归的锁,并且上锁成功,说明锁有bug
     对于读写锁,但并没有使用读写标志, 对于非读写锁,使用了读写标志
     对于递归锁,不统的线程能够第二次进入上锁,说明锁出现bug
     一个锁上一次后,不能被释放多次
     
4) 代码分析

   1. 首先看下开启调试锁的函数void evthread_enable_lock_debugging(void)

    

        //开启调试锁的功能
		void evthread_e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值