send, абстрактный метод
- Object? message
Отправляет асинхронное сообщение message через этот порт отправки соответствующему ReceivePort.
Транзитивный граф объектов message может содержать следующие объекты:
- Null
- bool
- int
- double
- String
- List, Map или Set (элементы которых имеют один из этих типов)
- TransferableTypedData
- SendPort
- Capability
- Type, представляющий один из этих типов, Object, dynamic, void или Never
Если изоляты отправителя и получателя используют один и тот же код (например, изоляты, созданные с помощью Isolate.spawn), транзитивный граф объектов message может содержать любые объекты, за следующими исключениями:
- Объекты с нативными ресурсами (подклассы, например,
NativeFieldWrapperClass1). Например, объект Socket внутренне ссылается на объекты, связанные с нативными ресурсами, поэтому его нельзя отправить. - ReceivePort
- DynamicLibrary
- Finalizable
- Finalizer
- NativeFinalizer
- Pointer
- UserTag
MirrorReference
За исключением перечисленных объектов можно отправлять любые объекты. Объекты, распознанные как неизменяемые (например, строки), будут использоваться совместно, а все остальные объекты будут копироваться.
Отправка происходит немедленно и может потребовать линейного времени для копирования транзитивного графа объектов. Сама отправка не блокирует выполнение (то есть не ожидает получения сообщения получателем). Соответствующий порт приёма может получить сообщение, как только цикл обработки событий его изолята будет готов его доставить, независимо от действий изолята-отправителя.
Примечание: из-за особенностей реализации Dart VM, связанных с тем, как замыкания представляют захваченное состояние, замыкания в настоящее время могут захватывать больше состояния, чем им необходимо, что может привести к тому, что транзитивное замыкание окажется больше, чем нужно. Сообщите об ошибке, чтобы исправить это: http://dartbug.com/36983
Реализация
void send(Object? message);
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-isolate/SendPort/send.html