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.

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

Обычно начальный 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, он может завершиться до того, как эти методы успеют выполниться.

Возвращает future, который завершится экземпляром 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.19.6/dart-isolate/Isolate/spawn.html

Spec-Zone.ru

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