Documentation ¶
Overview ¶
Package sync implements primitives for syncronization between processes.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DestroyEventMutex ¶
DestroyEventMutex is a no-op on windows, as the mutex is destroyed, when its last handle is closed.
func DestroyMutex ¶
DestroyMutex permanently removes mutex with the given name.
func DestroySpinMutex ¶
DestroySpinMutex removes a mutex object with the given name
Types ¶
type EventMutex ¶
type EventMutex struct {
// contains filtered or unexported fields
}
EventMutex is a mutex built on named windows events. It is not possible to use native windows named mutex, because goroutines migrate between threads, and windows mutex must be released by the same thread it was locked.
func NewEventMutex ¶
NewEventMutex creates a new event-basedmutex.
name - object name. flag - flag is a combination of open flags from 'os' package perm - object's permission bits.
func (*EventMutex) LockTimeout ¶
func (m *EventMutex) LockTimeout(timeout time.Duration) bool
LockTimeout tries to lock the locker, waiting for not more, than timeout.
func (*EventMutex) Unlock ¶
func (m *EventMutex) Unlock()
Unlock releases the mutex. It panics on an error.
type IPCLocker ¶
IPCLocker is a minimal interface, which must be satisfied by any synchronization primitive on any platform.
type SpinMutex ¶
type SpinMutex struct {
// contains filtered or unexported fields
}
SpinMutex is a synchronization object which performs busy wait loop.
func NewSpinMutex ¶
NewSpinMutex creates a new spin mutex.
name - object name. flag - flag is a combination of open flags from 'os' package. perm - object's permission bits.
func (*SpinMutex) Close ¶
Close indicates, that the object is no longer in use, and that the underlying resources can be freed.
func (SpinMutex) Lock ¶
func (spin SpinMutex) Lock()
Lock locks the mutex waiting in a busy loop if needed.