swoole_atomic->wait

当原子计数的值为0时程序进入等待状态。另外一个进程调用wakeup可以再次唤醒程序。底层基于Linux Futex实现,使用此特性,可以仅用4字节内存实现一个等待、通知、锁的功能。

function swoole_atomic->wait(float $timeout = -1) : bool

在不支持Futex的平台下,底层会使用循环usleep(1000)模拟实现

使用方法

$n = new swoole_atomic;
if (pcntl_fork() > 0) {
	echo "master start\n";
	$n->wait(1.5);
	echo "master end\n";
} else {
	echo "child start\n";
	sleep(1);
	$n->wakeup();
	echo "child end\n";
}