Метод spawn класса Isolate
Метод spawn класса Isolate создает
и запускает новый изолят. Изоляты в Dart -
это независимые единицы выполнения, каждая
из которых имеет собственную память и не
разделяет изменяемое состояние с другими
изолятами. В первый параметр мы передаем
entryPoint - функцию, которая будет выполнена
в новом изоляте. Во второй параметр мы
передаем message - начальные данные, которые
будут отправлены в изолят. Метод возвращает
объект Future, который завершается
объектом Isolate после создания изолята.
Синтаксис
Isolate.spawn(entryPoint, message)
Пример
Давайте создадим изолят, который выведет переданное ему сообщение:
import 'dart:isolate';
void isolateFunction(String message)
{
print('Isolate received: $message');
}
void main() async
{
await Isolate.spawn(isolateFunction, 'abcde');
}
Результат выполнения кода:
"Isolate received: abcde"
Пример
Давайте создадим изолят и получим объект
Isolate для дальнейшего управления им:
import 'dart:isolate';
void isolateFunction(int number)
{
print('Number: $number');
}
void main() async
{
Isolate isolate = await Isolate.spawn(isolateFunction, 12345);
print('Isolate created: $isolate');
}
Результат выполнения кода:
"Number: 12345"
"Isolate created: Instance of 'Isolate'"
Пример
Давайте создадим изолят, который выполнит вычисления и завершится:
import 'dart:isolate';
void computeFunction(int value)
{
int res = value * 2;
print('Result: $res');
}
void main() async
{
Isolate isolate = await Isolate.spawn(computeFunction, 5);
print('Isolate is running');
}
Результат выполнения кода:
"Isolate is running"
"Result: 10"
Смотрите также
-
класс
Isolate,
который представляет изолят -
метод
exit,
который завершает работу изолята -
класс
ReceivePort,
который принимает сообщения от изолятов -
класс
SendPort,
который отправляет сообщения в изолят