Fiber::suspend()

将当前的 Fiber 暂停,并切换到另一个 Fiber

首字母:F

函数名:Fiber::suspend()

适用版本:PHP 8.1.0 及以上版本

用法:Fiber::suspend() 函数用于将当前的 Fiber 暂停,并切换到另一个 Fiber。它可以在 Fiber 的执行过程中多次调用,以便让其他 Fiber 有机会执行。

示例:

start(); // 启动 Fiber 1
$fiber2->start(); // 启动 Fiber 2
echo "Main: Resuming Fiber 1\n";
$fiber1->resume(); // 恢复 Fiber 1 的执行
echo "Main: Resuming Fiber 2\n";
$fiber2->resume(); // 恢复 Fiber 2 的执行
echo "Main: Resuming Fiber 1 again\n";
$fiber1->resume(); // 再次恢复 Fiber 1 的执行
echo "Main: Finished\n";
?>

输出结果:

Fiber 1: Started
Fiber 2: Started
Main: Resuming Fiber 1
Fiber 1: Resumed
Main: Resuming Fiber 2
Fiber 2: Resumed
Main: Resuming Fiber 1 again
Fiber 1: Resumed again
Main: Finished

在上面的示例中,我们创建了两个 Fiber(Fiber 1 和 Fiber 2)。首先启动 Fiber 1,然后启动 Fiber 2。接着在主线程中先恢复 Fiber 1 的执行,再恢复 Fiber 2 的执行,最后再次恢复 Fiber 1 的执行。通过使用 Fiber::suspend() 函数,我们可以在 Fiber 的执行过程中暂停并切换到其他 Fiber,从而实现协程的效果。

同首字母函数