Запуск изолята в Dart
Новый изолят запускают функцией Isolate.spawn.
Ей передают точку входа - верхнюю функцию без
класса - и SendPort, через который дочерний
изолят сможет писать в основной.
В основном изоляте открывают ReceivePort,
берут его sendPort и передают в spawn.
Первое сообщение удобно ждать через
await receive.first, затем порт закрывают:
import 'dart:isolate';
void main() async {
var receive = ReceivePort();
await Isolate.spawn(read, receive.sendPort);
var message = await receive.first;
print(message);
receive.close();
}
void read(SendPort send) {
send.send("note");
}
Точка входа read выполняется уже в другом
изоляте. Она получает только SendPort -
обратный канал в тот ReceivePort, который
создали перед spawn.
Запустите изолят с функцией, которая отправляет
строку "io". Выведите полученное
сообщение и закройте порт приема.
Сделайте второй запуск: дочерняя функция
шлет строку "api". Дождитесь ответа
через first и выведите его.