channel Lock
命名空间:\EasySwoole\Component\ChannelLock
.
ChannelLock 通过协程channel
特性实现了关于协程级的锁机制.
go(function (){
//加锁
$result = \EasySwoole\Component\ChannelLock::getInstance()->lock('a');
var_dump($result);
co::sleep(1);
//解锁
$result = \EasySwoole\Component\ChannelLock::getInstance()->unlock('a');
var_dump($result);
});
lock
尝试锁住$lockName
. 方法原型: function lock(string $lockName,float $timeout = -1):bool 参数介绍:
- $lockName 锁名
- $timeout 超时时间,-1为永久不超时 当调用此函数后,会尝试锁住
$lockName
,成功将返回true,如果之前已经有其他协程锁住了此$lockName
,将会阻塞,直到超时返回false(-1用不超时,代表永远阻塞)
unlock
解锁
方法原型: function unlock(string $lockName,float $timeout = -1):bool 参数介绍:
- $lockName 锁名
- $timeout 超时时间,-1为永久不超时 解锁
$lockName
. 成功后将返回true.
deferLock
尝试锁住$lockName
,并在协程结束后自动解锁.
方法原型: deferLock(string $lockName,float $timeout = -1):bool
参数介绍:
- $lockName 锁名
- $timeout 超时时间,-1为永久不超时
当前内容版权归 EasySwoole 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 EasySwoole .