[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 3/3] thread-pool: remove stopping variable
From: |
Paolo Bonzini |
Subject: |
[PATCH v3 3/3] thread-pool: remove stopping variable |
Date: |
Sat, 14 May 2022 08:50:12 +0200 |
Just setting the max threads to 0 is enough to stop all workers.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
util/thread-pool.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/util/thread-pool.c b/util/thread-pool.c
index 6bbf24754a..507c998827 100644
--- a/util/thread-pool.c
+++ b/util/thread-pool.c
@@ -69,7 +69,6 @@ struct ThreadPool {
int idle_threads;
int new_threads; /* backlog of threads we need to create */
int pending_threads; /* threads created but not running yet */
- bool stopping;
int min_threads;
int max_threads;
};
@@ -82,7 +81,7 @@ static void *worker_thread(void *opaque)
pool->pending_threads--;
do_spawn_thread(pool);
- while (!pool->stopping && pool->cur_threads <= pool->max_threads) {
+ while (pool->cur_threads <= pool->max_threads) {
ThreadPoolElement *req;
int ret;
@@ -370,7 +369,7 @@ void thread_pool_free(ThreadPool *pool)
pool->new_threads = 0;
/* Wait for worker threads to terminate */
- pool->stopping = true;
+ pool->max_threads = 0;
qemu_cond_broadcast(&pool->request_cond);
while (pool->cur_threads > 0) {
qemu_cond_wait(&pool->worker_stopped, &pool->lock);
--
2.36.0
[PATCH v3 3/3] thread-pool: remove stopping variable,
Paolo Bonzini <=
Re: [PATCH v3 0/3] thread-pool: fix performance regression, Nicolas Saenz Julienne, 2022/05/17