【PHP8.x】isSuspendedメソッドの使い方

isSuspendedメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『isSuspendedメソッドは、対象のファイバーが中断状態にあるかどうかを判定する処理を実行するメソッドです。ファイバーは、Fiber::suspend()が呼び出されることによって、その実行を一時停止し、制御を呼び出し元に返します。このメソッドは、ファイバーがまさにその中断された状態、つまりFiber::suspend()が呼び出された後で、かつresume()throw()によって再開される前の状態にある場合に限りtrueを返します。一方で、ファイバーがまだstart()メソッドで開始されていない初期状態の場合、現在実行中の場合、あるいは既に関数の実行を完了して終了している場合にはfalseを返します。このメソッドを利用することで、ファイバーを管理する側のコードが、ファイバーを安全に再開できるかどうかを事前に確認できます。ファイバーのライフサイクルにおける現在の状態を正確に把握し、プログラムのフローを適切に制御するために重要な役割を果たします。

構文(syntax)

1<?php
2
3$fiber = new Fiber(function (): void {
4    Fiber::suspend();
5});
6
7// The Fiber is not suspended before it is started.
8var_dump($fiber->isSuspended()); // false
9
10// Start the Fiber. It runs until it is suspended.
11$fiber->start();
12
13// The Fiber is now suspended.
14var_dump($fiber->isSuspended()); // true
15
16// Resume the Fiber. It will run to completion.
17$fiber->resume();
18
19// A terminated Fiber is not suspended.
20var_dump($fiber->isSuspended()); // false

引数(parameters)

引数なし

引数はありません

戻り値(return)

bool

Fiberが中断されている状態かどうかを真偽値(trueまたはfalse)で返します。