函式名稱:Fiber::resume()
適用版本:PHP 8.1.0 及以上版本
函式描述:Fiber::resume() 函式用於從掛起的 Fiber 中恢復執行,並返回掛起點處的值。
用法:
建立 Fiber 物件:
$fiber = new Fiber(function() { echo "Fiber started\n"; Fiber::suspend("Fiber suspended"); // 掛起 Fiber 並傳遞掛起點的值 echo "Fiber resumed\n"; return "Fiber completed"; });
恢復執行 Fiber:
$value = $fiber->resume(); // 恢復 Fiber 的執行,並獲取掛起點的值 echo $value; // 輸出: "Fiber suspended"
再次恢復執行 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" 時呼叫,否則會丟擲異常。