Junior — Middle
How can you check if data locking was performed when using map with a mutex?
sobes.tech AI
Answer from AI
In Go, if you use a mutex to protect access to a map, you cannot directly check whether the lock has been acquired, as the standard sync.Mutex does not provide methods to check its state.
However, you can:
- Use
sync.RWMutexand carefully design your code so that locks are obvious. - In tests or debugging, add logging before and after calling
Lock()andUnlock(). - For more advanced control, you can use
sync.Mutexfrom thesyncpackage with wrappers that record the lock state (for example, a boolean flag), but this requires caution.
Example with logging:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
fmt.Println("Locking mutex")
mu.Lock()
defer mu.Unlock()
fmt.Println("Mutex locked")
m[key] = value
fmt.Println("Unlocking mutex")
}
Thus, indirectly, you can ensure that locking occurs, but there are no built-in tools to check the mutex state.