第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

基于 goroutine/channel 的機制應該取代并發(fā)映射嗎?

基于 goroutine/channel 的機制應該取代并發(fā)映射嗎?

Go
人到中年有點甜 2021-12-06 19:34:43
有一個map[PlayerId]Player檢查玩家是否在線并在知道他的 ID 的情況下執(zhí)行狀態(tài)更改。這必須同時從多個 goroutine 中完成?,F(xiàn)在我打算使用streamrail 的 concurrent map,但是使用通道的常規(guī)地圖和同步呢?在 Go 中它應該總是首選嗎?在某些情況下它應該是首選嗎?它們基本上只是完成同一件事的兩種方法嗎?順便說一句,我知道口號:不要通過共享內存來通信 通過通信共享內存但是 stdlib 中有鎖定機制,文檔中沒有關于根本不使用它們的字樣。
查看完整描述

1 回答

?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

從最簡單的方法開始:地圖和 RWMutex。


我不推薦使用并發(fā)庫,除非它被廣泛使用和測試(例如,參見https://github.com/streamrail/concurrent-map/issues/6)。


請注意,即使您使用 github.com/streamrail/concurrent-map,您仍然需要在以下場景中實現(xiàn)自己的同步(使用 RWMutex):


if _, ok = m[k]; !ok {

   m[k] = newPlayer()

}

如果您的游戲非常受歡迎并且被很多玩家玩,您會發(fā)現(xiàn)這種方法無法擴展,但只有當它成為問題時我才會擔心。


查看完整回答
反對 回復 2021-12-06
  • 1 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號