(1.0.0)
parallel\run — Выполнение
Планирует task
для выполнения в parallel.
Планирует task
для выполнения в parallel, передавая argv
во время выполнения.
Если \parallel\Runtime внутренне созданный и кешированный предыдущим вызовом parallel\run() бездействует, он будет использоваться для выполнения задачи. Если ни один \parallel\Runtime не бездействует, parallel создаст и сохранит в кеш \parallel\Runtime.
Замечание:
Объекты \parallel\Runtime, созданные программистом, не используются для автоматического планирования.
task
Замыкание (Closure) со специфическими характеристиками.
argv
Массив (array) аргументов с конкретными характеристиками, которые будут переданы task
во время выполнения.
Замыкания, запланированные для параллельного выполнения, не должны:
В замыканиях, предназначенных для параллельного выполнения, запрещены следующие инструкции:
Замечание:
Вложенные замыкания могут использовать 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
возвращается некорректно.