dispose method
Clean up the isolates and clear the queue
Implementation
Future<void> dispose() async {
_queue.clear();
for (var worker in _workers) {
worker.isolate.kill();
}
_activeWorkers.forEach((request, worker) {
Future.delayed(const Duration(milliseconds: 50))
.then((_) => worker.port.send(WorkerCommand.cancel));
Future.delayed(const Duration(milliseconds: 100))
.then((_) => worker.isolate.kill());
});
await Future.delayed(const Duration(milliseconds: 100));
_workers.clear();
_activeWorkers.clear();
_freeWorkersIndexes.clear();
initialized = false;
}