Forráskód Böngészése

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>
Paolo Bonzini 3 éve
szülő
commit
232e925547
1 módosított fájl, 2 hozzáadás és 3 törlés
  1. 2 3
      util/thread-pool.c

+ 2 - 3
util/thread-pool.c

@@ -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);