IsolatePool class

Persistent isolate pool with work-stealing scheduler and priority queue.

Replaces single-shot compute() calls with a pool of long-running isolates that eliminate per-frame spawn overhead. Inspired by CameraX's ImageAnalysis executor pool and Dynamsoft's background processing architecture.

Features:

  • Persistent isolate lifecycle (spawn once, reuse across frames)
  • Ring-buffer frame queue with configurable depth
  • Priority-based scheduling (tap-to-focus frames processed first)
  • Frame budget monitoring with auto-quality adjustment
  • Graceful shutdown with drain timeout

Constructors

IsolatePool({int poolSize = 2, int frameQueueDepth = 3})

Properties

avgProcessingTimeMs double
Rolling average processing time per frame (ms).
no setter
busyWorkers int
Number of workers currently busy.
no setter
completedTasks int
Number of tasks completed since initialization.
no setter
droppedFrames int
Number of frames dropped due to queue overflow.
no setter
frameQueueDepth int
final
hashCode int
The hash code for this object.
no setterinherited
isInitialized bool
Whether the pool is initialized and accepting work.
no setter
isOverloaded bool
Whether the pool is currently overloaded (all workers busy + queue full).
no setter
pendingTasks int
Number of tasks currently queued.
no setter
poolSize int
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

initialize() Future<void>
Initializes the isolate pool by spawning poolSize persistent workers.
isExceedingBudget({double targetMs = 40.0}) bool
Whether frame processing is currently exceeding the target budget.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
resetStats() → void
Resets statistics counters.
shutdown({Duration timeout = const Duration(seconds: 2)}) Future<void>
Gracefully shuts down the pool, completing pending tasks.
submit<T, R>(T taskData, R processor(T), {int priority = 0}) Future<R>
Submits a frame processing task to the pool.
toString() String
A string representation of this object.
inherited

Operators

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