dart:isolate
Isolate class
An isolated Dart execution context.
All Dart code runs in an isolate, and code can access classes and values only from the same isolate. Different isolates can communicate by sending values through ports (see ReceivePort, SendPort).
An Isolate
object is a reference to an isolate, usually different from the current isolate. It represents, and can be used control, the other isolate.
When spawning a new isolate, the spawning isolate receives an Isolate
object representing the new isolate when the spawn operation succeeds.
Isolates run code in its own event loop, and each event may run smaller tasks in a nested microtask queue.
An Isolate
object allows other isolates to control the event loop of the isolate that it represents, and to inspect the isolate, for example by pausing the isolate or by getting events when the isolate has an uncaught error.
The controlPort identifies and gives access to controlling the isolate, and the pauseCapability and terminateCapability guard access to some control operations. For example, calling pause on an Isolate
object created without a pauseCapability, has no effect.
The Isolate
object provided by a spawn operation will have the control port and capabilities needed to control the isolate. New isolate objects can be created without some of these capabilities if necessary, using the Isolate.Isolate constructor.
An Isolate
object cannot be sent over a SendPort
, but the control port and capabilities can be sent, and can be used to create a new functioning Isolate
object in the receiving port's isolate.
Constructors
- Isolate(SendPort controlPort, { Capability pauseCapability, Capability terminateCapability })
- Create a new Isolate object with a restricted set of capabilities. [...]
Properties
- controlPort → SendPort
final
- Control port used to send control messages to the isolate. [...]
- errors → Stream
read-only
- Returns a broadcast stream of uncaught errors from the isolate. [...]
- pauseCapability → Capability
final
- Capability granting the ability to pause the isolate. [...]
- terminateCapability → Capability
final
- Capability granting the ability to terminate the isolate. [...]
- hashCode → int
read-only, inherited
- The hash code for this object. [...]
- runtimeType → Type
read-only, inherited
- A representation of the runtime type of the object.
Methods
- addErrorListener(SendPort port) → void
- Requests that uncaught errors of the isolate are sent back to
port
. [...] - addOnExitListener(SendPort responsePort, { Object response }) → void
- Requests an exit message on
responsePort
when the isolate terminates. [...] - kill({int priority: beforeNextEvent }) → void
- Requests the isolate to shut down. [...]
- pause([Capability resumeCapability ]) → Capability
- Requests the isolate to pause. [...]
- ping(SendPort responsePort, { Object response, int priority: immediate }) → void
- Requests that the isolate send
response
on the responsePort
. [...] - removeErrorListener(SendPort port) → void
- Stops listening for uncaught errors from the isolate. [...]
- removeOnExitListener(SendPort responsePort) → void
- Stops listening for exit messages from the isolate. [...]
- resume(Capability resumeCapability) → void
- Resumes a paused isolate. [...]
- setErrorsFatal(bool errorsAreFatal) → void
- Sets whether uncaught errors will terminate the isolate. [...]
- noSuchMethod(Invocation invocation) → dynamic
inherited
- Invoked when a non-existent method or property is accessed. [...]
- toString() → String
inherited
- Returns a string representation of this object.
Operators
- operator ==(dynamic other) → bool
inherited
- The equality operator. [...]
Static Properties
- current → Isolate
read-only
- Return an Isolate object representing the current isolate. [...]
- packageConfig → Future<Uri>
read-only
- The package root of the current isolate, if any. [...]
- packageRoot → Future<Uri>
@
Deprecated('packages/ directory resolution is not supported in Dart 2.'), read-only
- The location of the package configuration of the current isolate, if any. [...]
Static Methods
- resolvePackageUri(Uri packageUri) → Future<Uri>
- Maps a package: URI to a non-package Uri. [...]
- spawn<T>(void entryPoint(T message), T message, { bool paused: false, bool errorsAreFatal, SendPort onExit, SendPort onError }) → Future<Isolate>
- Creates and spawns an isolate that shares the same code as the current isolate. [...]
- spawnUri(Uri uri, List<String> args, dynamic message, { bool paused: false, SendPort onExit, SendPort onError, bool errorsAreFatal, bool checked, Map<String, String> environment, Uri packageRoot, Uri packageConfig, bool automaticPackageResolution: false }) → Future<Isolate>
- Creates and spawns an isolate that runs the code from the library with the specified URI. [...]
Constants
- beforeNextEvent → const int
- Argument to
ping
and kill
: Ask for action before the next event. 1
- immediate → const int
- Argument to
ping
and kill
: Ask for immediate action. 0