查詢

Fiber::resume()函式—用法及示例

「 從掛起的 Fiber 中恢復執行,並返回掛起點處的值 」


函式名稱:Fiber::resume()

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

函式描述:Fiber::resume() 函式用於從掛起的 Fiber 中恢復執行,並返回掛起點處的值。

用法:

  1. 建立 Fiber 物件:

    $fiber = new Fiber(function() {
        echo "Fiber started\n";
        Fiber::suspend("Fiber suspended"); // 掛起 Fiber 並傳遞掛起點的值
        echo "Fiber resumed\n";
        return "Fiber completed";
    });
    
  2. 恢復執行 Fiber:

    $value = $fiber->resume(); // 恢復 Fiber 的執行,並獲取掛起點的值
    echo $value; // 輸出: "Fiber suspended"
    
  3. 再次恢復執行 Fiber:

    $value = $fiber->resume("Fiber resumed"); // 恢復 Fiber 的執行,並傳遞新的掛起點的值
    echo $value; // 輸出: "Fiber completed"
    

示例解釋: 以上示例中,我們首先建立了一個 Fiber 物件,並在其建構函式中定義了一個匿名函式作為 Fiber 的執行體。在匿名函式中,我們首先輸出 "Fiber started",然後透過 Fiber::suspend() 函式將 Fiber 掛起,並傳遞了掛起點的值 "Fiber suspended"。接著,我們使用 $fiber->resume() 方法來恢復 Fiber 的執行,並將掛起點的值賦給 $value 變數,最後輸出了 $value 的值。

在第三部分中,我們再次使用 $fiber->resume() 方法來恢復 Fiber 的執行,並傳遞了新的掛起點的值 "Fiber resumed"。同樣地,我們將恢復後的 Fiber 的返回值賦給 $value 變數,並輸出了 $value 的值。

需要注意的是,Fiber::resume() 函式只能在 Fiber 物件的狀態為 "suspended" 時呼叫,否則會丟擲異常。

補充糾錯
上一個函式: Fiber::start()函式
下一個函式: Fiber::isTerminated()函式
熱門PHP函式
分享連結