我有以下代碼執行例程。爲什麼我的相同的程序出現故障?
package main
import (
"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 : 0
2 : 0
3 : 0
4 : 0
5 : 0
6 : 0
7 : 0
8 : 0
9 : 0
1 : 1
2 : 1
3 : 1
4 : 1
etc...
,而是,我得到:
0 : 0
6 : 0
7 : 0
5 : 0
8 : 0
9 : 0
3 : 0
2 : 0
4 : 0
1 : 0
5 : 1
6 : 1
7 : 1
1 : 1
8 : 1
etc...
他們爲什麼不在原來的順序,外面的for循環執行計數方法?爲什麼有些計數方法不同步?
沒有爲了將夠程。雖然您可以按某種順序調用它們,但不保證按該順序執行。他們正在異步運行,並且手頭有資源的人員將開始工作。 – evanmcdonnal