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

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

更改地圖鏈接是否并發(fā)安全?

更改地圖鏈接是否并發(fā)安全?

Go
三國紛爭 2022-06-21 15:47:44
您知道嗎,在并發(fā)環(huán)境中將映射變量鏈接更改為另一個(gè)是否安全?一個(gè)例子是在一個(gè) goroutine 中將 mapdata替換為新的 map,并在另一個(gè) goroutine 中從它們中讀取元素:import (    "fmt"    "math/rand"    "strconv"    "testing"    "time")func TestMap(t *testing.T) {    s1 := rand.NewSource(time.Now().UnixNano())    r1 := rand.New(s1)    data := fill(r1.Intn(100))    timer := time.NewTimer(10 * time.Second)    go func() {        s1 := rand.NewSource(time.Now().UnixNano())        r1 := rand.New(s1)        for {            select {            case <-timer.C:                return            default:            }            p := r1.Intn(100)            v := fill(p)            data = v            fmt.Println("_p=" + strconv.Itoa(p))        }    }()    for range []int{1, 2, 3, 4, 5, 6, 7, 8} {        go func() {            s1 := rand.NewSource(time.Now().UnixNano())            r1 := rand.New(s1)            for {                select {                case <-timer.C:                    return                default:                }                n := r1.Intn(100)                s := strconv.Itoa(n)                fmt.Println(data[s])            }        }()    }    <-timer.C}func fill(postfix int) map[string][]string {    m := make(map[string][]string)    for i := 0; i < 100; i++ {        s := strconv.Itoa(i)        m[s] = []string{s + "_" + strconv.Itoa(postfix)}    }    return m}
查看完整描述

2 回答

?
侃侃爾雅

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

當(dāng)然,這并不安全。沒有任何變量(包括映射)對(duì)于并發(fā)讀寫是安全的。

您的一個(gè) goroutine 寫入data,另一個(gè)讀取它。運(yùn)行測試go test -race還會(huì)報(bào)告數(shù)據(jù)競爭:

testing.go:954: race detected during execution of test

您必須從多個(gè) goroutine 同步讀取和寫入data變量。


查看完整回答
反對(duì) 回復(fù) 2022-06-21
?
蕭十郎

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

不是的,更新數(shù)據(jù)時(shí)使用sync.Mutex 鎖定并解鎖。



查看完整回答
反對(duì) 回復(fù) 2022-06-21
  • 2 回答
  • 0 關(guān)注
  • 146 瀏覽

添加回答

舉報(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)