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 theresponsePort
. -
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
andkill
: Ask for action before the next event. - immediate → const int
-
Argument to
ping
andkill
: Ask for immediate action.