deadlock.go
func (m *Mutex) Unlock() {
	m.mu.Unlock()
	if !Opts.Disable {
		postUnlock(m)
	}
}
func (m *Mutex) Unlock() {
	m.mu.Unlock()
	if !Opts.Disable {
		postUnlock(m)
	}
}
func ( m * Mutex ) Unlock ( ) { m . mu . Unlock ( ) if ! Opts . Disable { postUnlock ( m ) } }
// Unlock unlocks the mutex.
// It is a run-time error if m is not locked on entry to Unlock.
//
// A locked Mutex is not associated with a particular goroutine.
// It is allowed for one goroutine to lock a Mutex and then
// arrange for another goroutine to unlock it.
Unlock unlocks the mutex . It is a run - time error if m is not locked on entry to Unlock . A locked Mutex is not associated with a particular goroutine . It is allowed for one goroutine to lock a Mutex and then arrange for another goroutine to unlock it .