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

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

無(wú)法找到 go 死鎖的原因

無(wú)法找到 go 死鎖的原因

Go
心有法竹 2022-11-23 20:05:14
無(wú)法找到此代碼死鎖的原因。此處的目的是讓工作人員僅在收到信號(hào)后才執(zhí)行例行程序。如果從代碼中刪除 signalStream 通道,它可以正常工作。但是當(dāng)它被引入時(shí),它就會(huì)陷入僵局。不確定這是為什么。另外,如果有任何工具可以解釋死鎖的發(fā)生,那將有所幫助。package mainimport (    "log"    "sync")const jobs = 10const workers = 5var wg sync.WaitGroupfunc main() {    // create channel    dataStream := make(chan interface{})    signalStream := make(chan interface{})    // Generate workers    for i := 1; i <= workers; i++ {        wg.Add(1)        go worker(dataStream, signalStream, i*100)    }    // Generate jobs    for i := 1; i <= jobs; i++ {        dataStream <- i    }    close(dataStream)    // start consuming data    close(signalStream)    wg.Wait()}func worker(c <-chan interface{}, s <-chan interface{}, id int) {    defer wg.Done()    <-s    for i := range c {        log.Printf("routine - %d - %d \n", id, i)    }}
查看完整描述

1 回答

?
哆啦的時(shí)光機(jī)

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

在一個(gè)單獨(dú)的 gorouine 中生成作業(yè),即將整個(gè)jobs循環(huán)放入一個(gè) goroutine 中。如果你不這樣做,那么dataStream <- i你的程序?qū)⒂肋h(yuǎn)不會(huì)“開始消耗數(shù)據(jù)”


// Generate jobs

go func() {

    for i := 1; i <= jobs; i++ {

        dataStream <- i

    }

    close(dataStream)

}()

https://go.dev/play/p/ChlbsJlgwdE


查看完整回答
反對(duì) 回復(fù) 2022-11-23
  • 1 回答
  • 0 關(guān)注
  • 89 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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