有時候因為業務需要,對某些非執行緒函式,比如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].
互斥鎖與讀寫鎖使用
sync.mutex和sync.rwmutex是go語言底層基礎物件,用於構建多個goroutine間的同步邏輯,當多個協程需要對共享資料讀寫時用到。具體實現極為簡潔,效能也 舉例 1.多個協程操作同乙個檔案 2.生產者消費者模型 具體例項我就以最簡單的列印方式說明互斥鎖 func print t ...
boost互斥鎖 boost鎖使用總結
boost鎖的概述 boost庫中提供了mutex類與lock類,通過組合可以輕易的構建讀寫鎖與互斥鎖。舉個通俗的例子,如果共享資源是乙個自動鎖住的房間,互斥體是鑰匙,進入房間必須取鑰匙,離開房間應該還鑰匙。這就對應著互斥體的lock 取鑰匙 和unlock 還鑰匙 動態分配記憶體存在類似的情況。如...
互斥鎖pthread mutex t的使用
2011 01 27 10 22 07 分類 linux 標籤 字型大小 大中小訂閱 1.互斥鎖建立 有兩種方法建立互斥鎖,靜態方式和動態方式。posix定義了乙個巨集pthread mutex initializer來靜態初始化互斥鎖,方法如下 pthread mutex t mutex pthr...