Junior — Middle
Is it possible to apply multiple locking mechanisms (Mutex) within the same function simultaneously?
sobes.tech AI
Answer from AI
Yes, in Go, you can use multiple mutexes (Mutex) within a single function simultaneously. This is often done when you need to protect different resources or parts of data that are not related to each other. The main thing is to avoid deadlocks, where one mutex waits for another to be released, and that one, in turn, waits for the first.
Example of using multiple mutexes:
var mu1 sync.Mutex
var mu2 sync.Mutex
func updateResources() {
mu1.Lock()
defer mu1.Unlock()
// Work with the first resource
mu2.Lock()
defer mu2.Unlock()
// Work with the second resource
}
To avoid deadlocks, it is recommended to always lock mutexes in the same order throughout the code.