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

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

寫入錯(cuò)誤通道會(huì)停止執(zhí)行

寫入錯(cuò)誤通道會(huì)停止執(zhí)行

Go
蝴蝶刀刀 2022-06-21 10:20:53
我正在嘗試sync.WorkGroup使用通道啟動(dòng)多個(gè) go-routines,并從這些工作人員那里收集錯(cuò)誤。(這是一個(gè)好方法嗎?)。每當(dāng)我嘗試寫入錯(cuò)誤通道時(shí),程序似乎都會(huì)停止。無法弄清楚它的原因。場景看起來像這樣 -package mainimport (    "fmt"    "time")func worker(id int, i int, errs chan<- errs) {   defer wg.Done()   errs <- fmt.Errorf("Sample Error") // This is where the executions seems to be stuck   return }func main() {    errs := make(chan int)    var wg sync.WaitGroup     for w := 1; w <= 3; w++ {        wg.Add(1)        go worker(w, w, errs)    }    wg.Wait()    fmt.Printf("Hello, all tasks done.") // Never executed.    close(errs)    for err := range errs{         fmt.Printf("%s", err.Error())   }}
查看完整描述

1 回答

?
慕標(biāo)琳琳

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

如果沒有其他 goroutine 從它讀取,則通道寫入將阻塞。當(dāng)您寫入錯(cuò)誤通道時(shí),沒有其他 goroutine 從它讀取,因此它會(huì)阻塞。

你的程序有幾個(gè)問題:

  • 您必須在調(diào)用之前從錯(cuò)誤通道開始讀取wg.Wait,因?yàn)檫@將等待 goroutine 完成,但如果您不從錯(cuò)誤通道讀取,goroutine 將不會(huì)運(yùn)行。

  • 關(guān)閉錯(cuò)誤通道后,您正嘗試從錯(cuò)誤通道中讀取。

像這樣的東西應(yīng)該工作:

errs := make(chan int, numJobs)

go func() {

    for err := range errs{

       fmt.Printf("%s", err.Error())

 }()

for w := 1; w <= 3; w++ {

    wg.Add(1)

    go worker(w, w, results)

}


查看完整回答
反對 回復(fù) 2022-06-21
  • 1 回答
  • 0 關(guān)注
  • 149 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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