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