diff -r 66b0accda0a8 -r b036ccad4b49 src/server/util/thrpool.c --- 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;iqueue_lock); + threadpool_enqueue_job(pool, &kill_job); + pthread_cond_signal(&pool->available); + pthread_mutex_unlock(&pool->queue_lock); + } +}