有没有人可以解释这段代码呢?????

xmge · · 809 次点击
我觉得和调度策略有关,多数情况下都是执行第二个go程,虽然理论上第一个go程也可能会执行(从结果来看,第一个go程被调度的机会很小);如果你把两个go程的判断条件换一下位置,即 flag 变成 !flag, !flag 变成 flag,那么多数情况下会什么结果都不输出。
#4
更多评论
xmge
欲戴王冠 必承其重
##### 代码并行执行时,执行顺序不定,以下代码输出无规律 ```go package main import ( "fmt" "time" ) func main() { go func() { fmt.Println(1) }() go func() { fmt.Println(2) }() go func() { fmt.Println(3) }() time.Sleep(time.Second * 1) } ```
#1
两种可能 如果先执行27行,则输出:a, 1, b, 2, c, 3, d, 4 如果先执行18行,则什么都不输出
#2