thread-pool: remove stopping variable

Just setting the max threads to 0 is enough to stop all workers.

Message-Id: <20220514065012.1149539-4-pbonzini@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Nicolas Saenz Julienne <nsaenzju@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2022-05-14 08:50:12 +02:00
parent 900fa208f5
commit 232e925547
1 changed files with 2 additions and 3 deletions

View File

@ -69,7 +69,6 @@ struct ThreadPool {
int idle_threads; int idle_threads;
int new_threads; /* backlog of threads we need to create */ int new_threads; /* backlog of threads we need to create */
int pending_threads; /* threads created but not running yet */ int pending_threads; /* threads created but not running yet */
bool stopping;
int min_threads; int min_threads;
int max_threads; int max_threads;
}; };
@ -82,7 +81,7 @@ static void *worker_thread(void *opaque)
pool->pending_threads--; pool->pending_threads--;
do_spawn_thread(pool); do_spawn_thread(pool);
while (!pool->stopping && pool->cur_threads <= pool->max_threads) { while (pool->cur_threads <= pool->max_threads) {
ThreadPoolElement *req; ThreadPoolElement *req;
int ret; int ret;
@ -370,7 +369,7 @@ void thread_pool_free(ThreadPool *pool)
pool->new_threads = 0; pool->new_threads = 0;
/* Wait for worker threads to terminate */ /* Wait for worker threads to terminate */
pool->stopping = true; pool->max_threads = 0;
qemu_cond_broadcast(&pool->request_cond); qemu_cond_broadcast(&pool->request_cond);
while (pool->cur_threads > 0) { while (pool->cur_threads > 0) {
qemu_cond_wait(&pool->worker_stopped, &pool->lock); qemu_cond_wait(&pool->worker_stopped, &pool->lock);