summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/SequentialTaskQueue.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/_emerge/SequentialTaskQueue.py')
-rw-r--r--pym/_emerge/SequentialTaskQueue.py15
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)