Lock
swoole1.6.4版本增加了锁的实现。PHP代码中可以很方便地创建一个锁,用来实现数据同步。swoole_lock类支持5种锁的类型:
- 文件锁 SWOOlE_FILELOCK
- 读写锁 SWOOLE_RWLOCK
- 信号量 SWOOLE_SEM
- 互斥锁 SWOOLE_MUTEX
- 自旋锁 SWOOlE_SPINLOCK
注意:请勿在onReceive
等回调函数中创建锁,否则底层的GlobalMemory内存不足会创建失败。在swoole中可以创建的Lock对象数量有限
示例:
$lock = new swoole_lock(SWOOLE_MUTEX); echo "[Master]create lock\n"; $lock>lock(); if(pcntl_fork() > 0) { sleep(1); $lock>unlock(); } else { echo "[Child] Wait Lock\n"; $lock>lock(); echo "[Child] Get Lock\n"; $lock>unlock(); exit("[Child] exit\n"); } echo "[Master]release lock\n"; unset($lock); sleep(1); echo "[Master]exit\n";