有个场景是这样,两个goroutine共同操作一个全局变量。
一个写,另一个读。
这种情况下如果不加读写锁的话,安全吗?
我以为是不安全的。但是写了个示例代码,不加锁的,发现程序并不会挂掉。
为啥?
示例代码是:
```
package main
import (
//"sync"
"math/rand"
"runtime"
"time"
)
type Tmp struct {
a int
b string
c float64
}
var g Tmp
func main() {
runtime.GOMAXPROCS(4)
go func() {
for {
g = Tmp{rand.Intn(100), "123", rand.Float64()}
println("set", g.a)
}
}()
go func() {
for {
println("get", g.c)
}
}()
for {
time.Sleep(30 * time.Second)
}
}
```
示例代码来自:
https://github.com/aszxqw/practice/blob/master/go/rwmutex/main.go
有疑问加站长微信联系(非本文作者)