【发布时间】:2021-10-19 15:13:30
【问题描述】:
在以下函数之一中调用 mu.Lock() 会锁定包级 accCache 映射吗?
package cache
import (
"sync"
)
type CachedAccount struct {
Id string
Expires int64
}
var accCache = make(map[string]CachedAccount)
var mu sync.Mutex
func addAccount...
func getAccount...
【问题讨论】:
-
互斥锁在其锁定和解锁之间锁定“代码块”。它不锁定变量。即互斥锁的锁定和解锁之间的代码不会被多个goroutine同时执行。
-
不,两个完全不相关的变量不会对彼此做任何事情,无论它们在包内部/外部的可见性如何。该映射与互斥体没有任何关系。