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
  • 按引用使用
  • declare class
  • declare named function

备注:

嵌套的闭包可以 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