swoole一键协程化(sleep函数)

2021-10-31

一键协程化,包括sleep、usleep、time_nanosleep、time_sleep_until;
底层的定时器最小粒度是1ms,因此使用usleep等高精度睡眠函数时,如果设置为低于1ms时,将直接使用sleep系统调用。可能会引起非常短暂的睡眠阻塞

use Swoole\Coroutine;
use function Swoole\Coroutine\run;

Coroutine::set(['hook_flags'=> SWOOLE_HOOK_SLEEP]);

run(function() {
    go(function () {
        sleep(1);
        echo '1' . PHP_EOL;
    });
    go(function () {
        echo '2' . PHP_EOL;
    });
});
{/if}