WorkIsolate<P extends SendPort2> class abstract

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 ReceivePort2, SendPort2).

An Isolate object is a reference to an isolate, usually different from the current isolate. It represents, and can be used to 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 WorkIsolate.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.

Implementers

Constructors

WorkIsolate(SendPort2 controlPort, {Capability2? pauseCapability, Capability2? terminateCapability})

Properties

controlPort SendPort2
Control port used to send control messages to the isolate.
final
debugName String?
The name of the WorkIsolate displayed for debug purposes.
no setter
hashCode int
The hash code for this object.
no setterinherited
messages Stream
Returns a broadcast stream of uncaught errors from the isolate.
no setter
pauseCapability Capability2?
Capability granting the ability to pause the isolate.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
terminateCapability Capability2?
Capability granting the ability to terminate the isolate.
final

Methods

addErrorListener(SendPort2 port) → void
Requests that uncaught errors of the isolate are sent back to port.
addOnExitListener(SendPort2 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.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
pause([Capability2? resumeCapability]) Capability2
Requests the isolate to pause.
ping(SendPort2 responsePort, {Object? response, int priority = immediate}) → void
Requests that the isolate send response on the responsePort.
removeErrorListener(SendPort2 port) → void
Stops listening for uncaught errors from the isolate.
removeOnExitListener(SendPort2 responsePort) → void
Stops listening for exit messages from the isolate.
resume(Capability2 resumeCapability) → void
Resumes a paused isolate.
sendToIsolate(Object message) → void
setErrorsFatal(bool errorsAreFatal) → void
Sets whether uncaught errors will terminate the isolate.
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Constants

beforeNextEvent → const int
Argument to ping and kill: Ask for action before the next event.
immediate → const int
Argument to ping and kill: Ask for immediate action.