在基於雜湊的Map中使用鎖分段技術

2021-08-20 18:36:17 字數 693 閱讀 3820

1、降低鎖競爭的程度:減少鎖的持有時間,降低鎖的請求頻率,使用帶有協調機制的獨佔鎖。縮小加鎖**的範圍;縮小鎖的粒度,對相互對立的共享變數使用不同的鎖;對單個鎖分解為兩個鎖,到分解為多個鎖的鎖分段,使同一時刻可以讓更多執行緒同時操作不同分段鎖鎖定的分段。

2、基於雜湊的map實現,其中使用了鎖分段技術。它擁有n_locks個鎖,並且每個鎖保護雜湊桶的乙個子集。大多數方法,列入get,都只需要獲得乙個鎖,而有些方法則需要獲得所有的鎖,但並不要求同時獲得,例如clear方法的實現。

3、**示例如下:

/**

* stripedmap

* * hash-based map using lock striping**

@author

brian goetz and tim peierls

*/@threadsafe

public class stripedmap

public

stripedmap(int numbuckets)

private final int

hash(object key)

public object get(object key)

return null;

} public void

clear() }}

}

在ATS外掛程式中使用互斥鎖

有時候因為業務需要,對某些非執行緒函式,比如mktime,需要使用互斥鎖,可以參照example blacklist 1或者channel stats裡面的用法 首先外掛程式頂部宣告 static tsmutex sites mutex 在tsplugininit 中初始化 sites mutex ...

雜湊表 基於c 中map容器的實現

雜湊表是一類經常使用的查詢技術,在程式設計中也經常使用,這裡簡單談談基於map的雜湊表的實現。對映 map 是stl的乙個關聯容器,它提供一對一 第乙個為關鍵字,每個關鍵字只能出現一次 第二個為該關鍵字的值,即key value的形式 的資料處理能力 map常用的建構函式如下 1 map mapst...

在零日檢測中使用基於異常的監控

當基於簽名的模式最初被引入網際網路安全時,是作為一種過濾流量的更快的決策模式,當時簽名資料庫還是可管理的,並且零日攻擊只是想象得到,一般不會執行。然而,當試圖為不斷增加的新簽名擴充套件簽名模式時,問題就出現了。今年三大臭名昭著的惡意軟體 即stuxnet duqu和flame 暴露了基於簽名的技術的...