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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何安全地將新的鍵值對(duì)添加到本地地圖中

如何安全地將新的鍵值對(duì)添加到本地地圖中

Go
守著星空守著你 2023-07-31 16:23:15
我想從并發(fā)線程向 Golang 映射添加一個(gè)新的鍵值對(duì)。問題是,如果地圖中存在密鑰,我們不會(huì)創(chuàng)建新的密鑰對(duì)。從多線程的角度來看,如何檢查當(dāng)前條件以及如果鍵不存在則插入鍵值。有沒有什么方法可以組織代碼以在第一次遇到時(shí)安全地添加密鑰?主要問題是安全地初始化互斥體
查看完整描述

2 回答

?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

有沒有什么方法可以組織代碼以在第一次遇到時(shí)安全地添加密鑰?

不,您需要適當(dāng)?shù)耐健?/p>


查看完整回答
反對(duì) 回復(fù) 2023-07-31
?
qq_花開花謝_0

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊

我建議結(jié)合sync.Map存儲(chǔ)鍵值和sync.Once值內(nèi)部來執(zhí)行一次性初始化。

這是一個(gè)例子:

type Value struct {

? ? init? ? ? ?sync.Once

? ? someValue? string

}


func (v *Value) Init() {

? ? v.init.Do(func() {

? ? ? ? // This function will only be executed one time

? ? ? ? v.someValue = "initialized"

? ? })

}


func main() {

? ? var m sync.Map


? ? v1, _ := m.LoadOrStore("key", &Value{})

? ? v1.(*Value).Init() // init function is called


? ? v2, _ := m.LoadOrStore("key", &Value{})

? ? v2.(*Value).Init() // init function is not called

}


查看完整回答
反對(duì) 回復(fù) 2023-07-31
  • 2 回答
  • 0 關(guān)注
  • 150 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)