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:
parent
900fa208f5
commit
232e925547
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user