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

Класс ReceivePort

Класс ReceivePort создаёт порт для приёма сообщений от других изолятов. Каждый экземпляр ReceivePort имеет свойство sendPort, которое нужно передать в другой изолят, чтобы он мог отправлять сообщения обратно. При создании нового экземпляра ReceivePort автоматически открывается порт. Когда порт больше не нужен, его следует закрыть методом close, иначе изолят не завершится. Получить поток сообщений можно через свойство listen.

Синтаксис

ReceivePort()

Пример

Давайте создадим порт приёма и выведем его порт отправки:

import 'dart:isolate'; void main() { ReceivePort receivePort = ReceivePort(); print(receivePort.sendPort); receivePort.close(); }

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

"SendPort"

Пример

Давайте отправим сообщение в порт приёма и прочитаем его через поток listen:

import 'dart:isolate'; void main() { ReceivePort receivePort = ReceivePort(); receivePort.listen((message) { print(message); receivePort.close(); }); receivePort.sendPort.send('abcde'); }

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

"abcde"

Пример

Давайте создадим изолят, передадим ему порт отправки и получим от него ответ:

import 'dart:isolate'; void main() async { ReceivePort receivePort = ReceivePort(); await Isolate.spawn(worker, receivePort.sendPort); receivePort.listen((message) { print(message); receivePort.close(); }); } void worker(SendPort sendPort) { sendPort.send('12345'); }

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

"12345"

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

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