func (m *ReadLockManager) Cancel(fn string) {
	m.mutex.RLock()
	locks := m.readLocks[fn]
	m.mutex.RUnlock()

	for _, l := range locks {
		l.Cancel()
		<-l.Done()
	}
}
// Cancel cancels all read lock contexts associated with fn.
Cancel cancels all read lock contexts associated with fn.
// Cancel cancels all read lock contexts associated with fn .
func (m *ReadLockManager) Cancel(fn string) {
	m.mutex.RLock()
	locks := m.readLocks[fn]
	m.mutex.RUnlock()
	for _, l := range locks {
		l.Cancel()
		<-l.Done()
	}
}
func ( m * ReadLockManager ) Cancel ( fn string ) { m . mutex . RLock ( ) locks := m . readLocks [ fn ] m . mutex . RUnlock ( ) for _ , l := range locks { l . Cancel ( ) <- l . Done ( ) } }
Cancel cancels all read lock contexts associated with fn.
Cancel cancels all read lock contexts associated with fn .