2 回答

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
既然你要了地圖
每次訪問時(shí)無需鎖定整個(gè)結(jié)構(gòu)
我指導(dǎo)您執(zhí)行以下實(shí)施:
https://github.com/cornelk/hashmap
該項(xiàng)目使用許多CPU架構(gòu)中常見的原子指令實(shí)現(xiàn)了純無鎖哈希圖數(shù)據(jù)結(jié)構(gòu)
常規(guī) gosync.Map
仍然使用底層互斥鎖來鎖定相應(yīng)的映射數(shù)據(jù)結(jié)構(gòu)。

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
包sync
提供并發(fā)安全映射。
Map 類似于 Go 的 map[interface{}]interface{},但可以安全地由多個(gè) goroutine 并發(fā)使用,無需額外的鎖定或協(xié)調(diào)。加載、存儲(chǔ)和刪除在分?jǐn)偝A繒r(shí)間內(nèi)運(yùn)行。
盡管規(guī)范本身指出了應(yīng)該使用這兩種特定情況(否則他們建議使用帶有鎖定機(jī)制的法線貼圖):
當(dāng)給定鍵的條目?jī)H寫入一次但讀取多次時(shí),就像在只會(huì)增長(zhǎng)的緩存中一樣
當(dāng)多個(gè) goroutine 讀取、寫入和覆蓋不相交的鍵集的條目時(shí)
- 2 回答
- 0 關(guān)注
- 168 瀏覽
添加回答
舉報(bào)