dmutex

package
v0.1.9 Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2021 License: MIT Imports: 3 Imported by: 0

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 高级互斥锁 使用atomic + channel实现的高级互斥锁模块,支持更丰富的互斥锁特性 互斥锁对象支持读写控制,互斥锁功能逻辑与标准库sync.RWMutex类似,可并发读但不可并发写

func New

func New() *Mutex

New 新建一个高级互斥锁

func (*Mutex) IsLocked

func (that *Mutex) IsLocked() bool

IsLocked 判断当前锁是否处于加锁状态

func (*Mutex) IsRLocked

func (that *Mutex) IsRLocked() bool

IsRLocked 判断当前锁是否处于读锁状态

func (*Mutex) IsWLocked

func (that *Mutex) IsWLocked() bool

IsWLocked 判断当前锁是否是处于写锁状态

func (*Mutex) Lock

func (that *Mutex) Lock()

Lock 加写锁,如果锁已经被其他的goroutine占用,则会阻塞等待锁可用

func (*Mutex) LockFunc

func (that *Mutex) LockFunc(f func())

LockFunc 使用写锁执行一段代码,不用担心panic,因为使用defer解锁,所以无论如何都会解锁成功

func (*Mutex) RLock

func (that *Mutex) RLock()

RLock 给高级互斥锁加上读锁,如果已存在写锁,则需要等待写锁完成在执行

func (*Mutex) RLockFunc

func (that *Mutex) RLockFunc(f func())

RLockFunc 使用读锁直营一段代码,一定会解锁成功

func (*Mutex) RUnlock

func (that *Mutex) RUnlock()

RUnlock 解锁高级互斥锁上的读锁,可以重复调用

func (*Mutex) TryLock

func (that *Mutex) TryLock() bool

TryLock 非阻塞尝试获取写锁,获取锁成功返回true,获取失败返回false

func (*Mutex) TryLockFunc

func (that *Mutex) TryLockFunc(f func()) (result bool)

TryLockFunc 尝试加锁并执行方法,加锁成功则会执行方法,加锁失败什么都不做, 返回值result表示加锁是否成功

func (*Mutex) TryRLock

func (that *Mutex) TryRLock() bool

TryRLock 尝试给高级互斥锁增加读锁,如果添加成功,则返回true,加锁失败返回false

func (*Mutex) TryRLockFunc

func (that *Mutex) TryRLockFunc(f func()) (result bool)

TryRLockFunc 尝试加读锁执行一段方法,加锁成功则会执行,加锁失败则什么都不做,返回值result表示加锁是否成功

func (*Mutex) Unlock

func (that *Mutex) Unlock()

Unlock 解锁高级互斥锁上的写锁,支持重复调用

Jump to

Keyboard shortcuts

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