lock.php 611 B

1234567891011121314151617181920212223242526272829
  1. <?php
  2. /**
  3. * SWOOLE_MUTEX 互斥锁
  4. * SWOOLE_FILELOCK 文件锁,需要在第二个参数传入一个锁文件
  5. * SWOOLE_SPINLOCK 自旋锁(请查看swoole扩展信息,检测是否支持)
  6. * SWOOLE_SEM 信号量
  7. * SWOOLE_RWLOCK 读写锁
  8. */
  9. $lock = new swoole_lock(SWOOLE_MUTEX);
  10. echo "[Master]create lock\n";
  11. $lock->lock();
  12. if (pcntl_fork() > 0)
  13. {
  14. sleep(1);
  15. $lock->unlock();
  16. }
  17. else
  18. {
  19. echo "[Child] Wait Lock\n";
  20. $lock->lock();
  21. echo "[Child] Get Lock\n";
  22. $lock->unlock();
  23. exit("[Child] exit\n");
  24. }
  25. echo "[Master]release lock\n";
  26. unset($lock);
  27. sleep(1);
  28. echo "[Master]exit\n";