\swoole_lock

Class swoole_lock

Summary

Methods
Properties
Constants
__construct()
lock()
trylock()
unlock()
lock_read()
trylock_read()
No public properties found
No constants found
No protected methods found
No protected properties found
N/A
No private methods found
No private properties found
N/A

Methods

__construct()

__construct(integer  $type, string  $lockfile = NULL) 

Parameters

integer $type

为锁的类型

string $lockfile

当类型为SWOOLE_FILELOCK时必须传入,指定文件锁的路径 注意每一种类型的锁支持的方法都不一样。如读写锁、文件锁可以支持 $lock->lock_read()。 另外除文件锁外,其他类型的锁必须在父进程内创建,这样fork出的子进程之间才可以互相争抢锁。

lock()

lock() 

加锁操作

如果有其他进程持有锁,那这里将进入阻塞,直到持有锁的进程unlock。

trylock()

trylock() 

加锁操作

与lock方法不同的是,trylock()不会阻塞,它会立即返回。 当返回false时表示抢锁失败,有其他进程持有锁。返回true时表示加锁成功,此时可以修改共享变量。

SWOOlE_SEM 信号量没有trylock方法

unlock()

unlock() 

释放锁

lock_read()

lock_read() 

阻塞加锁

lock_read方法仅可用在读写锁(SWOOLE_RWLOCK)和文件锁(SWOOLE_FILELOCK)中,表示仅仅锁定读。 在持有读锁的过程中,其他进程依然可以获得读锁,可以继续发生读操作。但不能$lock->lock()或$lock->trylock(),这两个方法是获取独占锁的。

当另外一个进程获得了独占锁(调用$lock->lock/$lock->trylock)时,$lock->lock_read()会发生阻塞,直到持有锁的进程释放。

trylock_read()

trylock_read() 

非阻塞加锁

此方法与lock_read相同,但是非阻塞的。调用会立即返回,必须检测返回值以确定是否拿到了锁。