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.