deadlock.go
func (m *RWMutex) RUnlock() {
	m.mu.RUnlock()
	if !Opts.Disable {
		postUnlock(m)
	}
}
func (m *RWMutex) RUnlock() {
	m.mu.RUnlock()
	if !Opts.Disable {
		postUnlock(m)
	}
}
func ( m * RWMutex ) RUnlock ( ) { m . mu . RUnlock ( ) if ! Opts . Disable { postUnlock ( m ) } }
// RUnlock undoes a single RLock call;
// it does not affect other simultaneous readers.
// It is a run-time error if rw is not locked for reading
// on entry to RUnlock.
RUnlock undoes a single RLock call ; it does not affect other simultaneous readers . It is a run - time error if rw is not locked for reading on entry to RUnlock .