Класс 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