Spec-Zone.ru › Dart 2

dart:isolate

Класс 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 → SendPort
окончательное
Порт управления, используемый для отправки управляющих сообщений изоляту.
debugName → String?
только для чтения
Имя Isolate, отображаемое для целей отладки.
errors → Stream
только для чтения
Возвращает широковещательный поток необработанных ошибок из изолята.
hashCode → int
только для чтения унаследовано
Хеш-код этого объекта.
pauseCapability → Capability?
окончательное
Разрешение, предоставляющее возможность приостановить изолят.
runtimeType → Type
только для чтения унаследовано
Представление типа объекта во время выполнения.
terminateCapability → Capability?
окончательное
Разрешение, предоставляющее возможность завершить изолят.

Методы

addErrorListener(SendPort port) → void
Запрашивает отправку необработанных ошибок изолята обратно в port.
addOnExitListener(SendPort responsePort, {Object? response}) → void
Запрашивает отправку сообщения о завершении в responsePort при завершении изолята.
kill({int priority = beforeNextEvent}) → void
Запрашивает завершение работы изолята.
noSuchMethod(Invocation invocation) → dynamic
унаследовано
Вызывается при обращении к несуществующему методу или свойству.
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
унаследовано
Строковое представление этого объекта.

Операторы

operator ==(Object other) → bool
унаследовано
Оператор равенства.

Статические свойства

current → Isolate
только для чтения
Объект Isolate, представляющий текущий изолят.
packageConfig → Future<Uri?>
только для чтения
Расположение конфигурации пакетов текущего изолята, если она есть.

Статические методы

exit([SendPort? finalMessagePort, Object? message]) → Never
Синхронно завершает текущий изолят.
resolvePackageUri(Uri packageUri) → Future<Uri?>
Преобразует URI package: в URI, не относящийся к пакету.
run<R>(FutureOr<R> computation(), {String? debugName}) → Future<R>
Выполняет computation в новом изоляте и возвращает результат.
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.19.6/dart-isolate/Isolate-class.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API