下面代码,理论上 val 的最终结果应该是 100~200 之间的某个值,在笔记本电脑上运行确实如此,val 最终 118。但是,当我在台式机上运行时,结果却一直都是 200,谁能帮我解答一下吗?
var val = 0
func main() {
num := runtime.NumCPU()
fmt.Println("使用cpu数量", num)
go add("A")
go add("B")
time.Sleep(1 * time.Second)
fmt.Println("val的最终结果", val)
}
func add(proc string) {
for i := 0; i < 100; i++ {
val++
fmt.Printf("execute process[%s] and val is %d\n", proc, val)
time.Sleep(5 * time.Millisecond)
}
}