我有以下代码执行例程。为什么我的相同的程序出现故障?
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