PHP 8.2.0 Released!

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
  • use by-reference
  • declare class
  • declare named function

Замечание:

Вложенные замыкания могут использовать yield или передачу значения по ссылке, но не должны содержать объявления классов или именованных функций.

Замечание:

Никакие инструкции не запрещены в файлах, которые может включать задача.

Аргументы характеристик

Аргументы не должны:

  • содержать ссылки
  • содержать ресурсы
  • содержать внутренние объекты (смотрите примечания)

Замечание:

В случае ресурсов файлового потока ресурс будет преобразован в файловый дескриптор и передан как целое число (int), где это возможно, не поддерживается в Windows.

Примечания к внутренним объектам

Внутренние объекты обычно используют настраиваемую структуру, которую нельзя безопасно скопировать по значению, в PHP в настоящее время отсутствует механизм для этого (без сериализации), и поэтому могут использоваться только объекты, которые не используют настраиваемую структуру.

Некоторые внутренние объекты не используют настраиваемую структуру, например, parallel\Events\Event и поэтому могут использоваться совместно.

Замыкания - это особый вид внутреннего объекта, который поддерживает копирование по значению, поэтому может использоваться совместно.

Каналы играют ключевую роль в написании параллельного кода и при необходимости поддерживают одновременный доступ и выполнение, поэтому могут использоваться совместно.

Внимание

Пользовательский класс, расширяющий внутренний класс, может использовать настраиваемую структуру, определённую внутренним классом, и в этом случае они не могут быть безопасно скопированы по значению и поэтому не могут использоваться совместно.

Возвращаемые значения

Внимание

Нельзя игнорировать возвращаемый parallel\Future, если задача содержит оператор return или throw.

Исключения

Внимание

Выбрасывает parallel\Runtime\Error\Closed, если parallel\Runtime был закрыт.

Внимание

Выбрасывает parallel\Runtime\Error\IllegalFunction, если task является замыканием, созданным из внутренней функции.

Внимание

Выбрасывает parallel\Runtime\Error\IllegalInstruction, если task содержит недопустимые инструкции.

Внимание

Выбрасывает parallel\Runtime\Error\IllegalParameter, если task принимает или argv содержит недопустимые переменные.

Внимание

Выбрасывает parallel\Runtime\Error\IllegalReturn, если task возвращается некорректно.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top