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

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

關閉停止通道不會停止戈魯丁

關閉停止通道不會停止戈魯丁

Go
德瑪西亞99 2022-09-19 20:47:11
介紹:我剛剛開始學習Go語言,并達到了關于并發(fā)的課程。我為自己發(fā)明了一個小任務,試圖實現(xiàn)我所學到的關于關閉戈魯廷的知識。問題:如果我們關閉信道,它將始終在語句中被選中,這是向所有戈魯丁廣播取消信號的好方法。caseselect下面我有2個戈魯丁和一個從未被接收的頻道。quit操場上的代碼超時。如果我注釋掉戈魯丁中的部分,那么信號就會被接收到。defaultquit問題:我真的不明白為什么會發(fā)生這種情況以及如何解決它,盡管我正在嘗試。有人可以向我解釋問題是什么,并就如何解決它提供一些建議嗎?package mainimport (    "fmt"    "sync"    "time")func positive_numbers(quit chan struct{}, wg *sync.WaitGroup) {    defer wg.Done()    i := 1    for {        select {        case <-quit:            fmt.Println("[+]Quiting...")            return        default:            fmt.Printf("%v ", i)            i++        }    }}func negative_numbers(quit chan struct{}, wg *sync.WaitGroup) {    defer wg.Done()    i := -1    for {        select {        case <-quit:            fmt.Println("[-]Quiting...")            return        default:            fmt.Printf("%v ", i)            i--        }    }}func main() {    quit := make(chan struct{})    wg := sync.WaitGroup{} // so we can wait for all goroutines to finish    wg.Add(2)    go positive_numbers(quit, &wg)    go negative_numbers(quit, &wg)    go func(quit chan struct{}) {        defer close(quit)        time.Sleep(1 * time.Second)    }(quit)    wg.Wait()}
查看完整描述

1 回答

?
RISEBY

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

此代碼在現(xiàn)實生活中工作正常;它只是與游樂場的“假時間”不兼容,因為并且不阻塞,并且運行時無法決定在到期之前運行每個迭代的次數(shù)(基本上,打印需要零模擬的壁鐘時間,因此它們試圖產(chǎn)生無限的輸出,并且您達到了游樂場的CPU使用限制,而根本沒有提前過壁式時鐘時間)。在真實的機器上,你只能在有限的時間內(nèi)打印有限的輸出,你會得到合理的行為。positive_numbersnegative_numbersSleep

在游樂場中,如果您在每次打印后添加類似的東西,則強制假時鐘向前移動,程序也會終止。time.Sleep(time.Millisecond)


查看完整回答
反對 回復 2022-09-19
  • 1 回答
  • 0 關注
  • 93 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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