在ATS插件中使用互斥锁

来源:互联网 发布:ibm公司软件 编辑:程序博客网 时间:2024/06/06 14:26
有时候因为业务需要,对某些非线程函数,比如mktime,需要使用互斥锁,可以参照example/blacklist-1或者channel_stats里面的用法
首先插件顶部声明
static TSMutex sites_mutex;
在TSPluginInit()中初始化
sites_mutex = TSMutexCreate();
在需要使用的地方,加锁和解锁
TSMutexLock(sites_mutex)

TSMutexLockTry(sites_mutex)
TSMutexUnlock(sites_mutex);
在哪里销毁?
会在该插件范围内永远使用,没有机会销毁,除非服务器退出,因为是静态的,创建对象不多,不好造成大的内存泄露

在channel_stats.cc搜索stats_map_mutex可以得到下面的调用位置


参考文献

[1].https://issues.apache.org/jira/browse/TS-3561

0 0
原创粉丝点击