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

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

Go例程不執(zhí)行

Go例程不執(zhí)行

Go
瀟湘沐 2023-04-24 16:06:35
以下是給我?guī)韱栴}的代碼。我想要實(shí)現(xiàn)的是并行創(chuàng)建那么多表。創(chuàng)建所有表后,我想退出函數(shù)。func someFunction(){    ....    gos := 5    proc := make(chan bool, gos)    allDone := make(chan bool)    for i:=0; i<gos; i++ {        go func() {            for j:=i; j<len(tables); j+=gos {                r, err := db.Exec(tables[j])                fmt.Println(r)                if err != nil {                    methods.CheckErr(err, err.Error())                }            }            proc <- true        }()    }    go func() {        for i:=0; i<gos; i++{            <-proc        }        allDone <- true    }()    for {        select {        case <-allDone:            return        }    }   }我正在創(chuàng)建兩個通道 1 以跟蹤創(chuàng)建的表數(shù) (proc) 和其他通道 (allDone) 以查看是否全部完成。當(dāng)我運(yùn)行這段代碼時,創(chuàng)建表的 go 例程開始執(zhí)行,但在它完成之前 someFunction 被終止。但是如果順序運(yùn)行代碼就沒有問題我的設(shè)計(jì)模式有什么錯誤,我該如何糾正它。
查看完整描述

1 回答

?
千萬里不及你

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

您嘗試實(shí)現(xiàn)的通常模式使用WaitGroup.

我認(rèn)為您面臨的問題是i每個 goroutine 都捕獲了它,并且它不斷被外循環(huán)增加。您的內(nèi)循環(huán)從 5 開始i,并且由于外循環(huán)繼續(xù)進(jìn)行,每個 goroutine 從 5 開始。

嘗試將迭代器作為參數(shù)傳遞給 goroutine,以便每次都能獲得一個新副本。

func someFunction(){

? ? ....

? ? gos := 5

? ? var wg sync.WaitGroup

? ? wg.Add(gos)


? ? for i:=0; i< gos; i++ {

? ? ? ? go func(n int) {

? ? ? ? ? ? defer wg.Done()

? ? ? ? ? ? for j:=n; j<len(tables); j+=gos {

? ? ? ? ? ? ? ? r, err := db.Exec(tables[j])


? ? ? ? ? ? ? ? fmt.Println(r)


? ? ? ? ? ? ? ? if err != nil {

? ? ? ? ? ? ? ? ? ? methods.CheckErr(err, err.Error())

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }(i)

? ? }

? ? wg.Wait();? ? ?

}

我不確定你想在這里實(shí)現(xiàn)什么,每個 goroutinedb.Exec在它開始的那個上面的所有表上做,所以第一個處理所有表,第二個處理除第一個以外的所有表,依此類推。這是你想要的嗎?


查看完整回答
反對 回復(fù) 2023-04-24
  • 1 回答
  • 0 關(guān)注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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