(0.8.0)
parallel\Runtime::run — 執行
將排程 task
以平行方式執行。
將排程 task
以平行方式執行,並在執行時傳遞 argv
。
排程用於平行執行的閉包不得:
在用於平行執行的閉包中禁止的指令為:
註釋:
巢狀閉包可以使用 yield 或傳址,但不允許包含類別或具名函式的宣告。
註釋:
任務可能包含的檔案中沒有任何指令是被禁止的。
內部物件通常使用自定義結構,無法安全地以值複製,PHP 目前缺乏執行此操作的機制(不透過序列化),因此只有不使用自定義結構的物件才能被共享。
某些內部物件不使用自定義結構,例如 parallel\Events\Event,因此可以共享。
閉包是一種特殊的內部物件,支援以值複製,因此可以共享。
通道是撰寫平行程式碼的核心,並且必然支援並行存取和執行,因此可以共享。
繼承內部類別的使用者類別可能會使用內部類別定義的自定義結構,在這種情況下,它們無法安全地以值複製,因此不能共享。
當任務包含 return 或 throw 陳述式時,不得忽略回傳的 parallel\Future。
如果 parallel\Runtime 已關閉,將會丟出 parallel\Runtime\Error\Closed 例外。
如果 task
是從內部函式建立的閉包,將會丟出 parallel\Runtime\Error\IllegalFunction 例外。
如果 task
包含非法指令,將會丟出 parallel\Runtime\Error\IllegalInstruction 例外。
如果 task
接受或 argv
包含非法變數,將會丟出 parallel\Runtime\Error\IllegalParameter 例外。
如果 task
非法回傳,將會丟出 parallel\Runtime\Error\IllegalReturn 例外。