在ATS插件中使用互斥锁
生活随笔
收集整理的這篇文章主要介紹了
在ATS插件中使用互斥锁
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有時候因為業務需要,對某些非線程函數,比如mktime,需要使用互斥鎖,可以參照example/blacklist-1或者channel_stats里面的用法
首先插件頂部聲明
static TSMutex sites_mutex;
在TSPluginInit()中初始化
sites_mutex = TSMutexCreate();
在需要使用的地方,加鎖和解鎖
TSMutexLock(sites_mutex)
或
TSMutexLockTry(sites_mutex)
TSMutexUnlock(sites_mutex);
在哪里銷毀?
會在該插件范圍內永遠使用,沒有機會銷毀,除非服務器退出,因為是靜態的,創建對象不多,不好造成大的內存泄露
首先插件頂部聲明
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
總結
以上是生活随笔為你收集整理的在ATS插件中使用互斥锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多线程中使用mktime和setenv函
- 下一篇: cache.config配置文件解读