Golang 证实++,-- 操作是不安全的,开启10万个协程同时进行。
计算机操作系统原理,对于自增操作,是先从内存中取出来,然后加1操作,在存进去,在这之间就有时间差。
package main
import (
"fmt"
)
var n = 100000
func test(k int) {
res := 1
for j := 1; j < 20; j++ {
res *= j
}
n--
}
func main() {
for i := 1; i < 100001; i++ {
// fmt.Printf("i = %v\n",i)
go test(i);
}
var t int
for{
if n <= 0 {
break;
}
if n == 90000 {
fmt.Println("90000")
}
if t == n {
fmt.Printf("可以结束了=%v",n)
break;
}
t = n;
}
fmt.Printf("aaaaaaa = %v\n",n)
}
学习Go语言路上的一段记亿