sync

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 23, 2016 License: Apache-2.0 Imports: 14 Imported by: 1

Documentation

Overview

Package sync implements primitives for syncronization between processes.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DestroyMutex

func DestroyMutex(name string) error

DestroyMutex permanently removes mutex with the given name.

func DestroySemaMutex

func DestroySemaMutex(name string) error

DestroySemaMutex permanently removes mutex with the given name.

func DestroySpinMutex

func DestroySpinMutex(name string) error

DestroySpinMutex removes a mutex object with the given name

Types

type IPCLocker

type IPCLocker interface {
	sync.Locker
	io.Closer
}

IPCLocker is a minimal interface, which must be satisfied by any synchronization primitive on any platform.

func NewMutex

func NewMutex(name string, flag int, perm os.FileMode) (IPCLocker, error)

NewMutex creates a new interprocess mutex. It uses the default implementation on the current platform.

name - object name.
flag - flag is a combination of open flags from 'os' package.
perm - object's permission bits.

type SemaMutex

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

SemaMutex is a semaphore-based mutex for unix.

func NewSemaMutex

func NewSemaMutex(name string, flag int, perm os.FileMode) (*SemaMutex, error)

NewSemaMutex creates a new mutex.

func (*SemaMutex) Close

func (m *SemaMutex) Close() error

Close is a no-op for unix mutex.

func (*SemaMutex) Destroy

func (m *SemaMutex) Destroy() error

Destroy closes the mutex and removes it permanently.

func (*SemaMutex) Lock

func (m *SemaMutex) Lock()

Lock locks the mutex. It panics on an error.

func (*SemaMutex) Unlock

func (m *SemaMutex) Unlock()

Unlock releases the mutex. It panics on an error.

type Semaphore

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

Semaphore is a sysV semaphore.

func NewSemaphore

func NewSemaphore(name string, mode int, perm os.FileMode, initial int) (*Semaphore, error)

NewSemaphore creates a new sysV semaphore with the given name. It generates a key from the name, and then calls NewSemaphoreKey.

func NewSemaphoreKey

func NewSemaphoreKey(key uint64, flag int, perm os.FileMode, initial int) (*Semaphore, error)

NewSemaphoreKey creates a new sysV semaphore for the given key.

key - object key. each semaphore object is identifyed by a unique key.
flag - flag is a combination of open flags from 'os' package.
perm - object's permission bits.
initial - this value will be added to the semaphore's value, if it was created.

func (*Semaphore) Add

func (s *Semaphore) Add(value int) error

Add adds the given value to the semaphore's value. It locks, if the operation cannot be done immediately.

func (*Semaphore) Destroy

func (s *Semaphore) Destroy() error

Destroy removes the semaphore permanently.

type SpinMutex

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

SpinMutex is a synchronization object which performs busy wait loop.

func NewSpinMutex

func NewSpinMutex(name string, flag int, perm os.FileMode) (*SpinMutex, error)

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

func (spin *SpinMutex) Close() error

Close indicates, that the object is no longer in use, and that the underlying resources can be freed.

func (*SpinMutex) Destroy

func (spin *SpinMutex) Destroy() error

Destroy removes the mutex object.

func (SpinMutex) Lock

func (spin SpinMutex) Lock()

Lock locks the mutex waiting in a busy loop if needed.

func (SpinMutex) TryLock

func (spin SpinMutex) TryLock() bool

TryLock makes one attempt to lock the mutex. It return true on succeess and false otherwise.

func (SpinMutex) Unlock

func (spin SpinMutex) Unlock()

Unlock releases the mutex.

type TimedIPCLocker

type TimedIPCLocker interface {
	IPCLocker
	// LockTimeout tries to lock the locker, waiting for not more, than timeout
	LockTimeout(timeout time.Duration) bool
}

TimedIPCLocker is a locker, whose lock operation can be limited with duration.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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