diff options
Diffstat (limited to 'pym/_emerge/SequentialTaskQueue.py')
-rw-r--r-- | pym/_emerge/SequentialTaskQueue.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/pym/_emerge/SequentialTaskQueue.py b/pym/_emerge/SequentialTaskQueue.py index 3cd56d2d6..ebff430e3 100644 --- a/pym/_emerge/SequentialTaskQueue.py +++ b/pym/_emerge/SequentialTaskQueue.py @@ -55,13 +55,20 @@ class SequentialTaskQueue(SlotObject): self.schedule() def clear(self): + """ + Clear the task queue and asynchronously terminate any running tasks. + """ self._task_queue.clear() - running_tasks = self.running_tasks - while running_tasks: - task = running_tasks.pop() - task.removeExitListener(self._task_exit) + for task in list(self.running_tasks): task.cancel() + def wait(self): + """ + Synchronously wait for all running tasks to exit. + """ + while self.running_tasks: + next(iter(self.running_tasks)).wait() + def __bool__(self): return bool(self._task_queue or self.running_tasks) |