Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtSpIsSp 106 of 224 menu
◀ ▶

Запуск изолята в 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 и выведите его.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить