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

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

嘗試使用“范圍”打印通道值后出現(xiàn)死鎖

嘗試使用“范圍”打印通道值后出現(xiàn)死鎖

Go
慕桂英546537 2021-09-13 10:42:07
這是我在Go Playground 的代碼package mainimport (    "fmt")func sum_up(my_int int, cs chan int) {    my_sum := 0    for i := 0; i < my_int; i++ {        my_sum += i    }    cs <- my_sum}func main() {    my_channel := make(chan int)    for i := 2; i < 5; i++ {         go sum_up(i, my_channel)    }    for ele := range my_channel {        fmt.Println(ele)    }      //fatal error: all goroutines are asleep - deadlock!    fmt.Println("Done")}結果是:136fatal error: all goroutines are asleep - deadlock!我不明白是什么導致了錯誤。我的理解是,在我的函數(shù)中,sum_up我正在向my_channel. 為什么在我嘗試打印出值后會出現(xiàn)問題?由于我看到 1,3,6 被打印,這意味著所有goroutines都已成功完成。此外,如果試圖打印通道值的塊    for ele := range my_channel {        fmt.Println(ele)    }被刪除,然后我沒有收到錯誤。所以它包括導致錯誤的塊,但為什么呢?
查看完整描述

3 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

for range chan當 chan 收到關閉信號時退出。你必須在close(my_channel)某個地方,否則循環(huán)將永遠等待。


查看完整回答
反對 回復 2021-09-13
  • 3 回答
  • 0 關注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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