函数名:Fiber::isRunning()
适用版本:PHP 8.1.0 及以上版本
用法:Fiber::isRunning() 函数用于检查当前的 Fiber 是否正在运行。
示例:
$fiber = new Fiber(function() {
echo "Fiber started\n";
Fiber::suspend();
echo "Fiber resumed\n";
});
echo "Before starting fiber\n";
var_dump(Fiber::isRunning($fiber)); // 输出: bool(false)
$fiber->start();
echo "After starting fiber\n";
var_dump(Fiber::isRunning($fiber)); // 输出: bool(true)
$fiber->resume();
echo "After resuming fiber\n";
var_dump(Fiber::isRunning($fiber)); // 输出: bool(false)
解释:
- 首先,我们创建了一个 Fiber 对象,该对象包含了一个匿名函数作为 Fiber 的执行体。
- 在开始执行 Fiber 之前,我们使用 Fiber::isRunning() 函数检查当前 Fiber 是否正在运行。由于 Fiber 还没有开始执行,所以返回值为 false。
- 接着,我们调用 $fiber->start() 方法来启动 Fiber 的执行。此时,Fiber 开始运行,并输出 "Fiber started"。
- 再次使用 Fiber::isRunning() 函数检查当前 Fiber 是否正在运行。由于 Fiber 正在执行中,所以返回值为 true。
- 最后,我们调用 $fiber->resume() 方法来恢复 Fiber 的执行。Fiber 继续执行,并输出 "Fiber resumed"。
- 再次使用 Fiber::isRunning() 函数检查当前 Fiber 是否正在运行。由于 Fiber 已经执行完毕,所以返回值为 false。