lock

package
v0.0.0-...-c34bea4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 20, 2022 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Mutex

type Mutex struct {
	// contains filtered or unexported fields
}

Mutex is equivalent to sync.Mutex but applies deadlock detection if the built tag "lockdebug" is set

func (*Mutex) UnlockIgnoreTime

func (i *Mutex) UnlockIgnoreTime()

type MutexDebug

type MutexDebug struct {
	deadlock.Mutex
}

MutexDebug is a MutexDebug with deadlock detection regardless of use of the build tag

type RWMutex

type RWMutex struct {
	// contains filtered or unexported fields
}

RWMutex is equivalent to sync.RWMutex but applies deadlock detection if the built tag "lockdebug" is set

func (*RWMutex) UnlockIgnoreTime

func (i *RWMutex) UnlockIgnoreTime()

type RWMutexDebug

type RWMutexDebug struct {
	deadlock.RWMutex
}

RWMutexDebug is a RWMutexDebug with deadlock detection regardless of use of the build tag

type SemaphoredMutex

type SemaphoredMutex struct {
	// contains filtered or unexported fields
}

SemaphoredMutex is a semaphored mutex that provides a RWLocker interface.

func NewSemaphoredMutex

func NewSemaphoredMutex() SemaphoredMutex

NewSemaphoredMutex returns a new SemaphoredMutex.

func (*SemaphoredMutex) Lock

func (i *SemaphoredMutex) Lock()

func (*SemaphoredMutex) RLock

func (i *SemaphoredMutex) RLock()

func (*SemaphoredMutex) RUnlock

func (i *SemaphoredMutex) RUnlock()

func (*SemaphoredMutex) Unlock

func (i *SemaphoredMutex) Unlock()

func (*SemaphoredMutex) UnlockToRLock

func (i *SemaphoredMutex) UnlockToRLock()

UnlockToRLock releases the current lock for writing but it still keeps it for reading purposes.

type StoppableWaitGroup

type StoppableWaitGroup struct {
	// contains filtered or unexported fields
}

A StoppableWaitGroup waits for a collection of goroutines to finish.

func NewStoppableWaitGroup

func NewStoppableWaitGroup() *StoppableWaitGroup

NewStoppableWaitGroup returns a new StoppableWaitGroup. When the 'Stop' is executed, following 'Add()' calls won't have any effect.

func (*StoppableWaitGroup) Add

func (l *StoppableWaitGroup) Add()

Add adds the go routine to the list of routines to that Wait() will have to wait before it returns. If the StoppableWaitGroup was stopped this will be a no-op.

func (*StoppableWaitGroup) Done

func (l *StoppableWaitGroup) Done()

Done will decrement the number of go routines the Wait() will have to wait before it returns. This function is a no-op once all go routines that have called 'Add()' have also called 'Done()' and the StoppableWaitGroup was stopped.

func (*StoppableWaitGroup) Stop

func (l *StoppableWaitGroup) Stop()

Stop makes following 'Add()' to be considered a no-op. If all goroutines that have called Add also called Done, 'Wait()' will be immediately unblocked.

func (*StoppableWaitGroup) Wait

func (l *StoppableWaitGroup) Wait()

Wait will return once all goroutines that have called Add also called Done and StoppableWaitGroup was stopped. Internally, Wait() returns once the internal counter becomes negative.

func (*StoppableWaitGroup) WaitChannel

func (l *StoppableWaitGroup) WaitChannel() <-chan struct{}

WaitChannel will return a channel that will be closed once all goroutines that have called Add also called Done and StoppableWaitGroup was stopped.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL