dispose method

Future<void> dispose()

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;
}