From 08c50d62b520c8405f034e3d7adeea89e06226ee Mon Sep 17 00:00:00 2001 From: Aníbal Limón Date: Tue, 23 Jun 2015 11:49:54 -0500 Subject: oe/utils.py: Add support for init/end helper functions in ThreadWorker. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add init/end helper functions for ThreadWorker also pass ThreadWorker as first argument to init/end/func functions this enables per-thread storage handling. classes/sstate.bbclass: Add thread_worker argument to checkstatus function. Signed-off-by: Aníbal Limón Signed-off-by: Richard Purdie --- meta/lib/oe/utils.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'meta/lib') diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py index f0d3c14137..cee087fdfa 100644 --- a/meta/lib/oe/utils.py +++ b/meta/lib/oe/utils.py @@ -218,22 +218,30 @@ from threading import Thread class ThreadedWorker(Thread): """Thread executing tasks from a given tasks queue""" - def __init__(self, tasks): + def __init__(self, tasks, worker_init, worker_end): Thread.__init__(self) self.tasks = tasks self.daemon = True + self.worker_init = worker_init + self.worker_end = worker_end + def run(self): from Queue import Empty + if self.worker_init is not None: + self.worker_init(self) + while True: try: func, args, kargs = self.tasks.get(block=False) except Empty: + if self.worker_end is not None: + self.worker_end(self) break try: - func(*args, **kargs) + func(self, *args, **kargs) except Exception, e: print e finally: @@ -241,12 +249,13 @@ class ThreadedWorker(Thread): class ThreadedPool: """Pool of threads consuming tasks from a queue""" - def __init__(self, num_workers, num_tasks): + def __init__(self, num_workers, num_tasks, worker_init=None, + worker_end=None): self.tasks = Queue(num_tasks) self.workers = [] for _ in range(num_workers): - worker = ThreadedWorker(self.tasks) + worker = ThreadedWorker(self.tasks, worker_init, worker_end) self.workers.append(worker) def start(self): -- cgit 1.2.3-korg