lock

package
v0.0.8 Latest Latest
Warning

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

Go to latest
Published: Jan 18, 2022 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package lock 分布式锁实现 分布式锁需要有客户端信息,只可以获得锁的客户端自己解锁或者等待锁自己过期 当未能获得锁需要等待锁释放时可以通过wait接口实现

Index

Constants

View Source
const DefaultCheckPeriod = 500 * time.Microsecond

DefaultCheckPeriod 等待的轮询间隔默认500微秒

View Source
const MiniCheckPeriod = 100 * time.Microsecond

MiniCheckPeriod 等待的轮询间隔最低100微秒

Variables

View Source
var ErrAlreadyLocked = errors.New("该锁已经被锁定")

ErrAlreadyLocked 该锁已经被锁定

View Source
var ErrAlreadyUnLocked = errors.New("该锁已经被解锁")

ErrAlreadyUnLocked 该锁已经被解锁

View Source
var ErrArgCheckPeriodMoreThan1 = errors.New("checkperiod必须只有1位或者没有设置")

ErrArgCheckPeriodMoreThan1 checkperiod参数的个数超过1个

View Source
var ErrCheckPeriodLessThan100Microsecond = errors.New("checkperiod 必须不小于100微秒")

ErrCheckPeriodLessThan100Microsecond checkperiod小于100微秒

View Source
var ErrNoRightToUnLocked = errors.New("无权解锁该锁")

ErrNoRightToUnLocked 无权解锁该锁

Functions

This section is empty.

Types

type Lock

type Lock struct {
	ClientID    string        //客户端id
	CheckPeriod time.Duration //等待的轮询间隔
	*clientkey.ClientKey
}

Lock 分布式锁结构

func New

func New(k *clientkey.ClientKey, clientID string, checkperiod ...time.Duration) (*Lock, error)

New 新建一个锁对象

func (*Lock) Check

func (l *Lock) Check(ctx context.Context) (bool, error)

Check 检测是否是锁定状态,true为锁定状态,false为非锁定状态

func (*Lock) Lock

func (l *Lock) Lock(ctx context.Context) error

Lock 设置锁

func (*Lock) Unlock

func (l *Lock) Unlock(ctx context.Context) error

Unlock 释放锁,已经释放锁或无权释放锁时报错

func (*Lock) Wait

func (l *Lock) Wait(ctx context.Context) error

Wait 等待锁释放

Jump to

Keyboard shortcuts

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