
On Thu, Nov 14, 2013 at 10:51:14AM +0100, Michal Privoznik wrote:
Even though currently we are freeing the pool of worker threads at the daemon very end, nothing holds us back in joining the worker threads.
s/daemon/daemon's/ ??? Unless the thread is blocked, right? Not that it should happen, but maybe adding a wrapper for pthread_timedjoin_np and using that (if available) might be better? Just an idea, I haven't thought that through ;)
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/util/virthreadpool.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/src/util/virthreadpool.c b/src/util/virthreadpool.c index b1e2c0c..99f36ec 100644 --- a/src/util/virthreadpool.c +++ b/src/util/virthreadpool.c @@ -241,6 +241,9 @@ void virThreadPoolFree(virThreadPoolPtr pool) { virThreadPoolJobPtr job; bool priority = false; + size_t i; + size_t nWorkers = pool->nWorkers; + size_t nPrioWorkers = pool->nPrioWorkers;
if (!pool) return; @@ -262,6 +265,12 @@ void virThreadPoolFree(virThreadPoolPtr pool) VIR_FREE(job); }
+ for (i = 0; i < nWorkers; i++) + virThreadJoin(&pool->workers[i]); + + for (i = 0; i < nPrioWorkers; i++) + virThreadJoin(&pool->prioWorkers[i]); + VIR_FREE(pool->workers); virMutexUnlock(&pool->mutex); virMutexDestroy(&pool->mutex); -- 1.8.3.2
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list