Junior — Middle
When is it recommended to use the RWMutex mechanism in programming for managing concurrent access to resources?
sobes.tech AI
Answer from AI
The RWMutex mechanism in Go is recommended when you have a resource that can be accessed by many readers simultaneously, but writing must be exclusive. RWMutex allows multiple goroutines to read data concurrently without blocking each other, but it blocks access for all during writing.
This improves performance in scenarios with frequent read operations and infrequent write operations.
Example usage:
var mu sync.RWMutex
var data int
func readData() int {
mu.RLock() // lock for reading
defer mu.RUnlock()
return data
}
func writeData(val int) {
mu.Lock() // exclusive lock for writing
defer mu.Unlock()
data = val
}
Use RWMutex when:
- Reading occurs frequently and in parallel.
- Writing occurs rarely and requires exclusive access.
If read and write operations are roughly equal in frequency, or simplicity is important, it is better to use a regular Mutex.