• Lock
    • 示例:

    Lock

    1.6.4版本增加了锁的实现。PHP代码中可以很方便地创建一个锁,用来实现数据同步。Lock类支持5种锁的类型:

    • 文件锁 SWOOLE_FILELOCK
    • 读写锁 SWOOLE_RWLOCK
    • 信号量 SWOOLE_SEM
    • 互斥锁 SWOOLE_MUTEX
    • 自旋锁 SWOOLE_SPINLOCK
      注意:请勿在onReceive等回调函数中创建锁,否则底层的GlobalMemory内存会持续增长,造成内存泄漏。

    示例:

    1. $lock = new swoole_lock(SWOOLE_MUTEX);
    2. echo "[Master]create lock\n";
    3. $lock->lock();
    4. if (pcntl_fork() > 0)
    5. {
    6. sleep(1);
    7. $lock->unlock();
    8. }
    9. else
    10. {
    11. echo "[Child] Wait Lock\n";
    12. $lock->lock();
    13. echo "[Child] Get Lock\n";
    14. $lock->unlock();
    15. exit("[Child] exit\n");
    16. }
    17. echo "[Master]release lock\n";
    18. unset($lock);
    19. sleep(1);
    20. echo "[Master]exit\n";