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

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

為什么我相同的圍棋程序出現故障?

為什么我相同的圍棋程序出現故障?

Go
海綿寶寶撒 2022-01-10 17:27:53
我有以下執行例程的 go 代碼。package mainimport (        "fmt"        "time")func count(id int) {        for i := 0; i < 10; i++ {                fmt.Println(id, ":", i)                time.Sleep(time.Millisecond * 1000)        }   }func main() {        for i := 0; i < 10; i++ {                go count(i)        }           time.Sleep(time.Millisecond * 11000)}我希望輸出是:1 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 01 : 12 : 13 : 14 : 1etc...但相反,我得到:0 : 06 : 07 : 05 : 08 : 09 : 03 : 02 : 04 : 01 : 05 : 16 : 17 : 11 : 18 : 1etc...為什么它們不是按照原始的順序,在外部 for 循環執行 count 方法?為什么某些計數方法不同步?
查看完整描述

2 回答

?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

goroutine 何時執行是程序員無法控制的。如果您通過通道和 sync.WaitGroup 使用信號,您可以進行一些控制(例如讓一個 goroutine 等待另一個 goroutine 完成),但您無法控制 goroutines 的執行順序


查看完整回答
反對 回復 2022-01-10
?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

正如其他人已經評論的那樣,goroutine 主要針對并發性。并發可以包含并行性和通信。如果你想控制他們的順序,你必須讓他們通過SIGNAL進行交流。例如,一個 goroutine 等待來自另一個 goroutine 的信號。請特別檢查 goroutine 和 channel。


查看完整回答
反對 回復 2022-01-10
  • 2 回答
  • 0 關注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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