Класс Isolate
Изолированная среда выполнения Dart.
Весь код Dart выполняется в изоляте, и код может получать доступ к классам и значениям только из того же изолята. Различные изоляты могут обмениваться данными, отправляя значения через порты (см. ReceivePort, SendPort).
Объект Isolate — ссылка на изолят, обычно отличающийся от текущего изолята. Он представляет и может использоваться для управления другим изолятом.
При запуске нового изолята изолят, запускающий его, получает объект Isolate , представляющий новый изолят, если операция запуска выполняется успешно.
Изоляты выполняют код в собственной очереди событий, и каждое событие может запускать более мелкие задачи в вложенной очереди микрозадач.
Объект Isolate позволяет другим изолятам управлять циклом событий изолята, который он представляет, и проверять изолят, например, останавливая изолят или получая события, когда изолят имеет необработанную ошибку.
С помощью controlPort можно определить и получить доступ к управлению изолятом, а pauseCapability и terminateCapability обеспечивают защиту доступа к некоторым операциям управления. Например, вызов pause на объекте Isolate , созданном без pauseCapability, не имеет эффекта.
Объект Isolate , предоставленный операцией запуска, будет содержать порт управления и необходимые возможности для управления изолятом. Новые объекты изолятов могут быть созданы без некоторых из этих возможностей, если это необходимо, с использованием конструктора Isolate.Isolate.
Объект Isolate не может быть отправлен через SendPort, но порт управления и возможности могут быть отправлены и могут быть использованы для создания нового функционального объекта Isolate в изоляте порта получения.
Конструкторы
- Isolate(SendPort controlPort, {Capability? pauseCapability, Capability? terminateCapability})
- Создаёт новый объект Isolate с ограниченным набором возможностей.
Свойства
- controlPort → SendPortfinal
- Порт управления, используемый для отправки управляющих сообщений в изолят.
- debugName → String?@Since("2.3"), read-only
- Имя Isolate, отображаемое в целях отладки.
- errors → Streamread-only
- Возвращает поток рассылки необработанных ошибок из изолята.
- hashCode → intread-only, inherited
- Хеш-код этого объекта.
- pauseCapability → Capability?final
- Возможность, предоставляющая возможность приостановить изолят.
- runtimeType → Typeread-only, inherited
- Представление типа объекта в среде выполнения.
- terminateCapability → Capability?final
- Возможность, предоставляющая возможность завершить изолят.
Методы
- addErrorListener(
SendPort port) → void - Запрашивает отправку обратно в
portнеобработанных ошибок изолята. - addOnExitListener(
SendPort responsePort, {Object? response}) → void - Запрашивает сообщение о завершении в
responsePortпри завершении работы изолята. - kill(
{int priority = beforeNextEvent}) → void - Запрашивает остановку изолята.
- noSuchMethod(
Invocation invocation) → dynamic inherited - Вызывается при обращении к несуществующему методу или свойству.
- pause(
[Capability? resumeCapability]) → Capability - Запрашивает приостановку изолята.
- ping(
SendPort responsePort, {Object? response, int priority = immediate}) → void - Запрашивает отправку
responseвresponsePort. - removeErrorListener(
SendPort port) → void - Останавливает прослушивание необработанных ошибок изолята.
- removeOnExitListener(
SendPort responsePort) → void - Останавливает прослушивание сообщений о выходе из изолята.
- resume(
Capability resumeCapability) → void - Возобновляет приостановленный изолят.
- setErrorsFatal(
bool errorsAreFatal) → void - Устанавливает, будут ли необработанные ошибки завершать изолят.
- toString(
) → String inherited - Строковое представление этого объекта.
Операторы
- operator ==(
Object other) → bool inherited - Оператор равенства.
Статические свойства
- current → Isolateread-only
- Объект Isolate, представляющий текущий изолят.
- packageConfig → Future<
Uri?> read-only - Местоположение конфигурации пакетов текущего изолята, если таковое имеется.
Статические методы
- exit(
[SendPort? finalMessagePort, Object? message]) → Never - Синхронно завершает текущий изолят.
- resolvePackageUri(
Uri packageUri) → Future< Uri?> - Преобразует URI пакета в URI, не связанный с пакетом.
- spawn<
T>( void entryPoint(T message), T message, {bool paused = false, bool errorsAreFatal = true, SendPort? onExit, SendPort? onError, String? debugName}) → Future< Isolate> - Создаёт и запускает изолят, который использует тот же код, что и текущий изолят.
- spawnUri(
Uri uri, List< String> args, dynamic message, {bool paused = false, SendPort? onExit, SendPort? onError, bool errorsAreFatal = true, bool? checked, Map< String, String>? environment, Uri? packageRoot, Uri? packageConfig, bool automaticPackageResolution = false, String? debugName}) → Future< Isolate> - Создаёт и запускает изолят, который выполняет код из библиотеки с указанным URI.
Константы
- beforeNextEvent → const int
- Аргумент для
pingиkill: запрос действия до следующего события.1 - immediate → const int
- Аргумент для
pingиkill: запрос немедленного действия.0
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-isolate/Isolate-class.html