(1.0.0)

parallel\run — Исполнение

Описание

parallel\run ( Closure $task ) : ?Future

Должен планировать task для выполнения в parallel.

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

Должен планировать task fдля выполнения в parallel, передавая argv во время выполнения.

Автоматическое Планирование

Если внутренняя среда выполнения \parallel\Runtime, созданная и кэшированная предыдущим вызовом parallel\run(), неактивно, оно будет использовано для выполнения задачи. Если \parallel\Runtime не используется, parallel создаст и кэширует \parallel\Runtime.

Замечание:

Объекты \parallel\Runtime, созданные программистом, не используются для автоматического планирования.

Список параметров

task

Closure конкретными характеристиками.

argv

Массив аргументов с конкретными характеристиками, передаваемый задаче task во время выполнения.

Особенности задачи

Замыкания, запланированные для параллельного выполнения, не должны:

  • принимать или возвращатьпо ссылке
  • принимать или возвращать внутренние объекты (см. Примечания)
  • выполнять ограниченный набор инструкций

Инструкции, запрещенные в замыканиях, предназначенных для параллельного выполнения являются:

  • yield
  • использование по ссылке
  • объявить класс
  • объявить именованную функцию

Замечание:

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

Замечание:

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

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

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

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

Замечание:

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

Внутренние Объекты Примечания

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

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

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

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

Внимание

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

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

Внимание

Return \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 возвращается незаконно.