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

Сообщение между изолятами в Dart

После запуска основной изолят получает порт второго и отправляет в него копию строки. Общей переменной между изолятами нет:

Дочерняя функция может слушать порт основного изолята и реагировать на каждое сообщение:

import 'dart:isolate'; void main() async { var receive = ReceivePort(); await Isolate.spawn(echo, receive.sendPort); var workerSend = await receive.first as SendPort; workerSend.send("note"); receive.close(); } void echo(SendPort mainSend) { var inbox = ReceivePort(); mainSend.send(inbox.sendPort); inbox.listen((message) { print(message); }); }

Сначала основной ждет SendPort рабочего канала, затем шлет строку уже на него. Переданный текст приходит копией - изменение в одном изоляте не затронет другой.

Отправьте из main строку "dart" во второй изолят и выведите ее длину, которую вернет дочерняя функция через тот же канал.

Дан следующий код:

import 'dart:isolate'; void main() async { var receive = ReceivePort(); await Isolate.spawn(worker, receive.sendPort); } void worker(SendPort mainSend) { var inbox = ReceivePort(); mainSend.send(inbox.sendPort); }

Допишите обмен: из main отправьте строку "vm", во втором изоляте прочитайте ее и верните исходный текст обратно. Выведите ответ.

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