go/src/sync/mutex.go

// Provided by runtime via linkname.
func throw(string)

func fatal(string)

type Mutex

type Locker

const mutexLocked

const mutexWoken

const mutexStarving

const mutexWaiterShift

const starvationThresholdNs

// Lock locks m.
// If the lock is already in use, the calling goroutine
// blocks until the mutex is available.
func (m *Mutex) Lock() {}

// TryLock tries to lock m and reports whether it succeeded.
//
// Note that while correct uses of TryLock do exist, they are rare,
// and use of TryLock is often a sign of a deeper problem
// in a particular use of mutexes.
func (m *Mutex) TryLock() bool {}

func (m *Mutex) lockSlow() {}

// Unlock unlocks m.
// 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.
func (m *Mutex) Unlock() {}

func (m *Mutex) unlockSlow(new int32) {}