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 ¶
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 ¶
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 SortableMutex ¶
type SortableMutex interface {
sync.Locker
Seq() uint64
AcquireDuration() time.Duration // The amount of time it took to acquire the lock
}
SortableMutex provides a Mutex that can be globally sorted with other sortable mutexes. This allows deadlock-safe locking of a set of mutexes as it guarantees consistent lock ordering.
func NewSortableMutex ¶
func NewSortableMutex() SortableMutex
type SortableMutexes ¶
type SortableMutexes []SortableMutex
SortableMutexes is a set of mutexes that can be locked in a safe order. Once Lock() is called it must not be mutated!
func (SortableMutexes) Less ¶
func (s SortableMutexes) Less(i int, j int) bool
Less implements sort.Interface.
func (SortableMutexes) Lock ¶
func (s SortableMutexes) Lock()
Lock sorts the mutexes, and then locks them in order. If any lock cannot be acquired, this will block while holding the locks with a lower sequence number.
func (SortableMutexes) Swap ¶
func (s SortableMutexes) Swap(i int, j int)
Swap implements sort.Interface.
func (SortableMutexes) Unlock ¶
func (s SortableMutexes) Unlock()
Unlock locks the sorted set of mutexes locked by prior call to Lock().
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 goroutine 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 goroutines the Wait() will have to wait before it returns. This function is a no-op once all goroutines 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.