mutex

package module
v0.0.0-...-1d8f388 Latest Latest
Warning

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

Go to latest
Published: Mar 8, 2024 License: MIT Imports: 5 Imported by: 0

README

Mutex

windows 跨进程锁。api 定义与实现方式主要受到了 github.com/juju/mutex/v2 的启发。

Documentation

Rendered for windows/amd64

Overview

Package mutex 封装了 windows 的跨进程锁。

Index

Examples

Constants

This section is empty.

Variables

View Source
var (

	// ErrDurationTooLong 表明传入的 duration 太长。
	ErrDurationTooLong = errors.New("mutex acquire: duration too long")
	// ErrWaitTimeout 表明等待锁的时间超过了指定的最长等待时间。
	ErrWaitTimeout = windows.WAIT_TIMEOUT
)

Functions

This section is empty.

Types

type Releaser

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

Releaser 用于释放锁资源。

func Acquire

func Acquire(name string) (*Releaser, error)

Acquire 创建跨进程互斥锁。 返回 Releaser 的 Release 方法用于释放锁资源。它必须且只能被调用一次。

Example
r, err := Acquire("kvii_mutex_example_acquire")
if err != nil {
	panic(err)
}
defer r.Release()

if r.IsAbandoned() {
	// 检查被加锁的资源是否处于一致状态
}
Output:

func AcquireWithTimeout

func AcquireWithTimeout(name string, timeout time.Duration) (*Releaser, error)

AcquireWithTimeout 创建跨进程互斥锁,并指定最长等待时间。 返回 Releaser 的 Release 方法用于释放锁资源。它必须且只能被调用一次。

Example
r, err := AcquireWithTimeout("kvii_mutex_example_acquire_with_timeout", time.Second)
if err != nil {
	panic(err)
}
defer r.Release()

if r.IsAbandoned() {
	// 检查被加锁的资源是否处于一致状态
}
Output:

func (*Releaser) IsAbandoned

func (r *Releaser) IsAbandoned() bool

IsAbandoned 表明锁的上一任持有者是否在没有释放锁时就退出了。 这很可能是因为上一任持有者发生了严重错误。使用者应该检查被加锁的资源是否处于一致状态。 注意此时锁已经被当前使用者所持有了,使用者依然需要调用 Release 方法。

func (*Releaser) Release

func (r *Releaser) Release() error

Release 释放锁资源。该方法必须且只能被调用一次。

Jump to

Keyboard shortcuts

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