Spec-Zone.ru › Dart 2

dart:isolate

Метод spawn<T>

Future<Isolate> spawn<T>(
  1. void entryPoint(
    1. T message
    ),
  2. T message,
  3. {bool paused = false,
  4. bool errorsAreFatal = true,
  5. SendPort? onExit,
  6. SendPort? onError,
  7. @Since("2.3") String? debugName}
)

Создаёт и запускает изолированное выполнение с тем же кодом, что и текущее изолированное выполнение.

Аргумент entryPoint определяет начальную функцию, которая будет вызвана в запущенном изолированном выполнении. Функция-точка входа вызывается в новом изолированном выполнении с message в качестве единственного аргумента.

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

Обычно начальный message содержит SendPort, чтобы спавнер и спавнинги могли общаться друг с другом.

Если параметр paused установлен в true, изолированное выполнение начнётся в приостановленном состоянии, незадолго до вызова функции entryPoint с message, как если бы был выполнен начальный вызов isolate.pause(isolate.pauseCapability). Для возобновления изолированного выполнения вызовите isolate.resume(isolate.pauseCapability).

Если параметры errorsAreFatal, onExit и/или onError заданы, изолированное выполнение будет действовать так, как будто были вызваны соответственно setErrorsFatal, addOnExitListener и addErrorListener с соответствующим параметром и были обработаны до запуска изолированного выполнения.

Если debugName задан, запущенное Isolate будет идентифицироваться по этому имени в отладчиках и журналах.

Если errorsAreFatal опущен, платформа может выбрать поведение по умолчанию или унаследовать поведение текущего изолированного выполнения.

Вы также можете вызвать методы setErrorsFatal, addOnExitListener и addErrorListener на возвращённом объекте изолированного выполнения, но если изолированное выполнение было запущено как paused, оно может уже завершиться, прежде чем эти методы смогут завершиться.

Возвращает обещание, которое выполнится с экземпляром Isolate в случае успешного запуска. В противном случае оно выполнится с ошибкой.

Можно ожидать, что базовые затраты памяти на изолированное выполнение будут порядка 30 Кб.

Реализация

external static Future<Isolate> spawn<T>(
    void entryPoint(T message), T message,
    {bool paused = false,
    bool errorsAreFatal = true,
    SendPort? onExit,
    SendPort? onError,
    @Since("2.3") String? debugName});

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-isolate/Isolate/spawn.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API