PHP 大会日本 2024

parallel\Runtime::run

(0.8.0)

parallel\Runtime::run执行

描述

public parallel\Runtime::run(Closure $task): ?Future

应将 task 调度到并行执行。

public parallel\Runtime::run(Closure $task, array $argv): ?Future

应将 task 调度到并行执行,在执行时传递 argv

参数

task

具有特定特征的 Closure

argv

一个 array,其中包含要在执行时传递给 task 的具有特定特征的参数。

任务特征

计划并行执行的闭包不得

  • 按引用接受或返回
  • 接受或返回内部对象(参见注释)
  • 执行有限的指令集

禁止在用于并行执行的闭包中使用的指令为

  • yield
  • 按引用使用
  • 声明类
  • 声明命名函数

注意:

嵌套闭包可以 yield 或按引用使用,但不得包含类或命名函数声明。

注意:

任务可能包含的文件中没有指令被禁止。

参数特征

参数不得

  • 包含引用
  • 包含资源
  • 包含内部对象(参见注释)

注意:

对于文件流资源,资源将尽可能转换为文件描述符并作为 int 传递,这在 Windows 上不受支持。

内部对象注释

内部对象通常使用无法安全地按值复制的自定义结构,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

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top