我在Go中写了一些线程安全的东西。我尝试使用Mutexes。
我发现的示例here似乎使用了Mutex而不进行任何初始化:
...
// essential part of the referred page
// (it is not my code, I know the pointer is unneeded here,
// it is the code of the referred site in the link - @peterh)
var mutex = &sync.Mutex{}
var readOps uint64 = 0
var writeOps uint64 = 0
for r := 0; r < 100; r++ {
go func() {
total := 0
for {
key := rand.Intn(5)
mutex.Lock()
....
我有点惊讶。是真的,他们不需要任何初始化吗?
最佳答案
互斥锁不需要初始化。
同样也可以是var Mutex sync.Mutex,不需要像int值一样的指针,也不需要将它们设置为0,因此您发现的示例可以得到改进。在所有这些情况下,零值都可以。
看到以下有效的方法:
https://golang.org/doc/effective_go.html#data
关于go - Mutex是否需要在Go中初始化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45744165/