src/server/util/thrpool.c

changeset 556
b036ccad4b49
parent 408
56edda8701e0
--- a/src/server/util/thrpool.c	Sat Aug 24 18:34:13 2024 +0200
+++ b/src/server/util/thrpool.c	Sat Aug 24 22:37:12 2024 +0200
@@ -78,7 +78,10 @@
 
         free(job);
     }
-    ws_atomic_dec32(&pool->num_threads);
+    uint32_t nthreads = ws_atomic_dec32(&pool->num_threads);
+    if(nthreads == 0) {
+        log_ereport(LOG_INFORM, "threadpool closed"); // TODO: log threadpool name
+    }
     return NULL;
 }
 
@@ -162,3 +165,13 @@
     }
     pool->queue_len++;
 }
+
+void threadpool_shutdown(threadpool_t *pool) {
+    int nthreads = pool->max_threads;
+    for(int i=0;i<nthreads;i++) {
+        pthread_mutex_lock(&pool->queue_lock);
+        threadpool_enqueue_job(pool, &kill_job);
+        pthread_cond_signal(&pool->available);
+        pthread_mutex_unlock(&pool->queue_lock);
+    }
+}

mercurial