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

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

如何確保按通道生產(chǎn)和消費(fèi)數(shù)據(jù)是安全的

如何確保按通道生產(chǎn)和消費(fèi)數(shù)據(jù)是安全的

Go
一只萌萌小番薯 2022-06-27 10:06:49
我是golang的新手,這是我的目的,我想讓2個(gè)例程與一個(gè)公共頻道同時(shí)運(yùn)行,消費(fèi)者應(yīng)該在頻道創(chuàng)建后啟動(dòng)并始終獲取數(shù)據(jù)直到頻道關(guān)閉,我的代碼模板如下:var userChannel chan stringfor index := 0; index < *clientNums; index++ {        wg.Add(1)        go run1()        go run2()    }    wg.Wait()}func run1() {   defer wg.Done()   // ...some logic   userChannel = make(chan string, *readUserNums)   for index := 0; index < *readUserNums; index++ {         //...some logic         userChannel <- userId         //...some logic   }   close(userChannel)}func run2() {   for sendId := range userChannel {       //...some logic}}在我的代碼中,如果run2首先運(yùn)行它會(huì)很恐慌,因?yàn)樯形磩?chuàng)建通道并且通道中沒(méi)有數(shù)據(jù)。我怎樣才能達(dá)到我的目的?謝謝你
查看完整描述

2 回答

?
守候你守候我

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

首先創(chuàng)建通道,然后將其傳遞到您的 goroutines 中,而不是將其存儲(chǔ)在全局中并動(dòng)態(tài)創(chuàng)建它。



查看完整回答
反對(duì) 回復(fù) 2022-06-27
?
米脂

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

即使userChannel最初沒(méi)有數(shù)據(jù)存在,只要?jiǎng)?chuàng)建了它就不會(huì)成為問(wèn)題userChannel,這里它失敗了,因?yàn)闆](méi)有創(chuàng)建通道。

run1在調(diào)用或run2傳遞通道之前創(chuàng)建通道始終是最佳實(shí)踐。

僅供參考:如果通道是由通道上沒(méi)有數(shù)據(jù)創(chuàng)建的,并且如果我們嘗試從通道中讀取數(shù)據(jù),這將是一個(gè)阻塞調(diào)用,并且將等待直到將數(shù)據(jù)接收到等待通道中。


查看完整回答
反對(duì) 回復(fù) 2022-06-27
  • 2 回答
  • 0 關(guān)注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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