我需要使用一個非常大的哈希表,并從許多讀者和許多作者并行訪問它。是否有像map這樣的數據結構,支持許多并行讀取和寫入,而無需每次訪問鎖定整個結構?
2 回答

慕村225694
TA貢獻1880條經驗 獲得超4個贊
既然你要了地圖
每次訪問時無需鎖定整個結構
我指導您執行以下實施:
https://github.com/cornelk/hashmap
該項目使用許多CPU架構中常見的原子指令實現了純無鎖哈希圖數據結構
常規 gosync.Map
仍然使用底層互斥鎖來鎖定相應的映射數據結構。

心有法竹
TA貢獻1866條經驗 獲得超5個贊
包sync
提供并發安全映射。
Map 類似于 Go 的 map[interface{}]interface{},但可以安全地由多個 goroutine 并發使用,無需額外的鎖定或協調。加載、存儲和刪除在分攤常量時間內運行。
盡管規范本身指出了應該使用這兩種特定情況(否則他們建議使用帶有鎖定機制的法線貼圖):
當給定鍵的條目僅寫入一次但讀取多次時,就像在只會增長的緩存中一樣
當多個 goroutine 讀取、寫入和覆蓋不相交的鍵集的條目時
- 2 回答
- 0 關注
- 152 瀏覽
添加回答
舉報
0/150
提交
取消