亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

go并發的一點小疑問

go并發的一點小疑問

慕桂英546537 2019-03-10 14:34:46
package mainimport "fmt"func main() {    go loop()    go loop() }func loop() {    for i := 0; i < 10; i++ {         fmt.Println(i)     } }這是我的代碼,結果是什么都沒輸出;按我的理解是應該輸出兩邊0-9的
查看完整描述

2 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

Go語言的原則是當main函數運行結束后,所有正在運行的協程都會終止! 也就是說主程序就已經退出了,go后的兩個function還沒來得及執行,所以看不到打印。
你可以讓主程序“睡”一會兒再退出,然后看看結果就明白了!

package mainimport (   "fmt"
   "time")func main() {   go loop()   go loop()
   time.Sleep(500000)
}func loop() {    for i := 0; i<10; i++ {
        fmt.Println(i)
    }
}


查看完整回答
反對 回復 2019-03-10
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

好歹讓主go routine阻塞住不要退出吶

package mainimport (
    "fmt"    "sync")var wg sync.WaitGroupfunc main() {

    go loop()
    go loop()

    wg.Wait()
}func loop() {
    wg.Add(1)
    for i := 0; i < 10; i++ {
        fmt.Println(i)
    }
    wg.Done()
}


查看完整回答
反對 回復 2019-03-10
  • 2 回答
  • 0 關注
  • 422 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號