spawn< T> статический метод
Создаёт и запускает изолят, использующий тот же код, что и текущий изолят.
Аргумент 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