РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
703 of 723 menu

Класс SendPort

Класс SendPort используется для отправки сообщений в изолят. Объект этого класса получается через свойство sendPort класса ReceivePort. Метод send принимает один параметр - сообщение, которое нужно отправить. Сообщение может быть любого типа, однако оно должно быть передаваемым между изолятами (примитивы, списки, карты, SendPort и т.д.).

Синтаксис

SendPort sendPort; sendPort.send(message);

Пример

Давайте создадим изолят и отправим в него сообщение с помощью SendPort:

import 'dart:isolate'; void isolateFunction(SendPort sendPort) { ReceivePort receivePort = ReceivePort(); sendPort.send(receivePort.sendPort); receivePort.listen((message) { print('Received: $message'); }); } void main() async { ReceivePort receivePort = ReceivePort(); await Isolate.spawn(isolateFunction, receivePort.sendPort); SendPort? sendPort; receivePort.listen((message) { if (message is SendPort) { sendPort = message; sendPort.send('abcde'); } }); }

Результат выполнения кода:

"Received: abcde"

Пример

Давайте отправим список чисел в изолят через SendPort:

import 'dart:isolate'; void isolateFunction(SendPort sendPort) { ReceivePort receivePort = ReceivePort(); sendPort.send(receivePort.sendPort); receivePort.listen((message) { print('Received: $message'); }); } void main() async { ReceivePort receivePort = ReceivePort(); await Isolate.spawn(isolateFunction, receivePort.sendPort); SendPort? sendPort; receivePort.listen((message) { if (message is SendPort) { sendPort = message; sendPort.send([1, 2, 3, 4, 5]); } }); }

Результат выполнения кода:

"Received: [1, 2, 3, 4, 5]"

Смотрите также

  • класс Isolate,
    который представляет изолят
  • метод spawn,
    который создает новый изолят
  • класс ReceivePort,
    который принимает сообщения от изолятов
  • метод send,
    который отправляет сообщение в изолят
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить