spinlock

package
v0.0.0-...-bb1a4e7 Latest Latest
Warning

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

Go to latest
Published: May 9, 2020 License: GPL-3.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetGoroutineId

func GetGoroutineId() uint32

Types

type ReentrableSpinLock

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

Reentrant allowable spin locks

func NewReentrableSpinLock

func NewReentrableSpinLock() *ReentrableSpinLock

func (*ReentrableSpinLock) Lock

func (sl *ReentrableSpinLock) Lock()

func (*ReentrableSpinLock) Unlock

func (sl *ReentrableSpinLock) Unlock()

type SpinLock

type SpinLock uint32

SpinLock implements a simple atomic spin lock, the zero value for a SpinLock is an unlocked spinlock.

func NewSpinLock

func NewSpinLock() *SpinLock

NewSpinLock instantiates a spin-lock.

func (*SpinLock) Lock

func (sl *SpinLock) Lock()

Lock locks sl. If the lock is already in use, the caller blocks until Unlock is called

func (*SpinLock) String

func (sl *SpinLock) String() string

func (*SpinLock) TryLock

func (sl *SpinLock) TryLock() bool

TryLock will try to lock sl and return whether it succeed or not without blocking.

func (*SpinLock) Unlock

func (sl *SpinLock) Unlock()

Unlock unlocks sl, unlike [Mutex.Unlock](http://golang.org/pkg/sync/#Mutex.Unlock), there's no harm calling it on an unlocked SpinLock

Jump to

Keyboard shortcuts

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