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(a)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(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list