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

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

可執(zhí)行程序在跨越空通道時搶先退出

可執(zhí)行程序在跨越空通道時搶先退出

Go
元芳怎么了 2023-03-21 15:09:37
我最近遇到了一個編碼練習,我在 python 中解決了這個問題,我不得不在其中移植一個“算法”。我不知道它是怎么稱呼的,這就是我描述它的原因:每一行都是通過按順序打印的相同數(shù)字的數(shù)量和相關數(shù)字對前一行的描述。這是一個例子:111211211111221312211etc我開始學習 Go 及其通道和并發(fā)功能。所以我回到這個練習,試圖與 Go 并行更有效地解決它。這是我到目前為止得到的:package mainfunc main() {    channel := make(chan uint8)    go treeCalcRoutine(channel, 0)    channel <- 1    close(channel) //defer is not an option in this case because the channel has     //to be closed before main exits}func treeCalcRoutine(in <-chan uint8, generation int) {    if generation > 10 {        return // return after 10 recursive iterations    }    out := make(chan uint8)    defer close(out)    num := uint8(1)    previous := <-i    go treeCalcRoutine(out, generation+1)    for val := range in {        switch {        case val == previous:            num++        default:            num = uint8(1)            out <- num            out <- val        }        previous = val    }    out <- num    out <- previous}在嘗試使用Delve調試程序時,我發(fā)現(xiàn)程序在嘗試遍歷空/關閉通道時無一例外地退出(并且退出狀態(tài)為 0)。在這種情況下,我希望程序完全跳過 for 循環(huán)。我仍然想自己解決這個挑戰(zhàn),所以如果有人能給我指出正確的方向而不是提供一個有效的解決方案,我將不勝感激。此外,請指出任何其他可以做得更好的問題/案例(如限制generation)。編輯:由于人們要求我發(fā)布錯誤:由于某種原因根本沒有錯誤。一旦到達 for 循環(huán),程序就會退出。
查看完整描述

1 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

所以問題實際上不是 for 循環(huán)在遇到關閉的通道時退出,而是主例程在那個確切的時間退出,這導致所有其他 goroutine 也終止。在這種情況下,我被建議使用等待組。



查看完整回答
反對 回復 2023-03-21
  • 1 回答
  • 0 關注
  • 73 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號