亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將標準 Golang Map 轉換為 Sync.Map 以避免競爭條件

將標準 Golang Map 轉換為 Sync.Map 以避免競爭條件

Go
HUH函數 2022-04-26 10:33:08
我有以下代碼行:var a_map = make(map[string] []int)我使用 a_map 變量的部分代碼偶爾會引發以下錯誤:fatal error: concurrent map read and map write為了創建一個更強大的解決方案,一個沒有此類錯誤的解決方案,我想使用一個 sync.Map 而不是通用映射。為這個堆棧溢出問題提供的唯一答案啟發了我這樣做。但是,我不清楚這樣做的正確語法。對于我的第一次嘗試,我使用了以下代碼行:var a_map = make(sync.Map[string] []int)這導致了以下錯誤:...syntax error: unexpected ], expecting expression然后我嘗試了: sync_map := new(sync.Map) var a_map = make(sync_map[string] []int)這導致了同樣的錯誤:...syntax error: unexpected ], expecting expression
查看完整描述

1 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

sync.Map不是 Go map,所以你不能使用a_map["key"]它的語法。相反,它是一個struct提供通常映射操作的 with 方法。使用它的語法是:


var m sync.Map

m.Store("example", []int{1, 2, 3})

fmt.Println(m.Load("example")) // [1 2 3] true

-- https://play.golang.org/p/7rbEG_x0mrC


根據您的并發源,您可能需要對每個鍵下的 []int 值進行類似的同步,而 sync.Map 不會為您提供。sync.Map 僅提供每個鍵的加載/存儲同步。如果是這樣,請發表評論,我們可以嘗試進一步幫助您。


查看完整回答
反對 回復 2022-04-26
  • 1 回答
  • 0 關注
  • 259 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號