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