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

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

給定代碼的執(zhí)行流程將如何?go 例程在這里將如何執(zhí)行?

給定代碼的執(zhí)行流程將如何?go 例程在這里將如何執(zhí)行?

Go
慕尼黑8549860 2023-07-31 16:56:44
(并發(fā)編程新手)有疑問為什么 goroutine 的執(zhí)行流程在這里有點奇怪?golang 中 goroutine 和通道的初學(xué)者。func main() {    // Set up the pipeline.    c := gen(2, 3)    out := sq(c)    // Consume the output.    fmt.Println(<-out) // 4    fmt.Println(<-out) // 9}func sq(in <-chan int) <-chan int {    out := make(chan int)    go func() {        for n := range in {            out <- n * n        }        close(out)    }()    return out}func gen(nums ...int) <-chan int {    out := make(chan int)    go func() {        for _, n := range nums {            out <- n        }        close(out)    }()    return out}
查看完整描述

1 回答

?
翻過高山走不出你

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

一旦調(diào)用gensq完成,就會有 3 個 goroutine 同時運(yùn)行。它們在通道之間傳遞數(shù)據(jù),因此執(zhí)行會產(chǎn)生相同的結(jié)果。

  1. 根內(nèi)

  2. 內(nèi)方

  3. 主要的

他們總是傳遞至少 2 條信息,因此按以下順序運(yùn)行代碼

  1. gen-inner out <- n-2-> sq-inner out <- n * n-4-> mainprintln(<-out)

  2. gen-inner out <- n-3-> sq-inner out <- n * n-9-> mainprintln(<-out)

還可能發(fā)生第三遍,但它可能會在maingoroutine 結(jié)束時被跳過。

  1. gen-inner close()-close-> sq-inner close(out)-close->


查看完整回答
反對 回復(fù) 2023-07-31
  • 1 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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