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

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

是否可以從Go中的多個(gè)goroutine中的一個(gè)接收結(jié)果?

是否可以從Go中的多個(gè)goroutine中的一個(gè)接收結(jié)果?

Go
猛跑小豬 2021-04-09 18:19:55
我只是最近才了解Google的編程語言Go。它為并發(fā)提供了支持,對(duì)此我很感興趣,并且開始學(xué)習(xí)更多有關(guān)它的知識(shí)。但是,我去看看Go是如何實(shí)現(xiàn)并發(fā)的特定功能的,到目前為止,我還沒有任何證據(jù)表明該功能確實(shí)存在。這是一個(gè)假設(shè)的情況:假設(shè)我們正在編寫一個(gè)函數(shù)來確定特定輸入的Foo值。對(duì)于任何給定的輸入,在域A或域B中都不能找到Foo值(兩者都不存在)。這些域中的搜索技術(shù)有很大不同,但是它們共享的屬性是成功的搜索往往會(huì)很快返回,而不成功的搜索則必須遍歷整個(gè)數(shù)據(jù)集才能詳盡無遺,因此需要很長時(shí)間?,F(xiàn)在,在使用并發(fā)的其他語言(例如Cilk)中,可以對(duì)Foosearch函數(shù)進(jìn)行編程,以便產(chǎn)生Asearch函數(shù)和Bsearch函數(shù)。這些函數(shù)將同時(shí)運(yùn)行,并且每當(dāng)它們中的任何一個(gè)給出答案時(shí),該答案都將被報(bào)告給調(diào)用函數(shù)Foosearch,該函數(shù)將終止所產(chǎn)生的所有未返回的函數(shù)。但是,使用Go的goroutine,您似乎只能將兩個(gè)例程與一個(gè)通道連接-因此,您無法設(shè)置Asearch或Bsearch可以向其發(fā)送的通道,具體取決于哪個(gè)首先找到答案,并讓Foosearch從中讀取它??雌饋砟矡o法從某個(gè)通道讀取而不阻止它-因此您無法讓Foosearch啟動(dòng)Asearch和Bsearch并從這兩個(gè)通道建立通道,然后循環(huán)運(yùn)行以查看是否產(chǎn)生了另一個(gè)通道答案。我對(duì)Go并發(fā)限制的理解正確嗎?還有另一種方法可以達(dá)到給定的結(jié)果嗎?
查看完整描述

2 回答

?
慕的地10843

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

您可以使用select關(guān)鍵字從多個(gè)渠道接收。


該值將從具有比其他結(jié)果更早的結(jié)果的通道中獲取。


var c1, c2 chan int;

var result int;


select {

case result = <-c1:

    print("received ", result, " from c1\n");

case result = <-c2:

    print("received ", result, " from c2\n");

}


查看完整回答
反對(duì) 回復(fù) 2021-04-26
  • 2 回答
  • 0 關(guān)注
  • 272 瀏覽

添加回答

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