From 8635c5df9049dbeba39f4b22a3397c623d5f8304 Mon Sep 17 00:00:00 2001 From: default Date: Thu, 13 Oct 2022 15:56:19 +0200 Subject: [PATCH] The waiting of the queue thread is done in a more appropriate way. --- httpd.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/httpd.c b/httpd.c index 8c340b8..9bfee12 100644 --- a/httpd.c +++ b/httpd.c @@ -200,6 +200,9 @@ void term_handler(int s) static void *queue_thread(void *arg) /* queue thread (queue management) */ { + pthread_mutex_t dummy_mutex = PTHREAD_MUTEX_INITIALIZER; + pthread_cond_t dummy_cond = PTHREAD_COND_INITIALIZER; + srv_log(xs_fmt("queue thread start")); while (srv_running) { @@ -216,7 +219,14 @@ static void *queue_thread(void *arg) } } - sleep(3); + /* sleep 3 seconds */ + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + ts.tv_sec += 3; + + pthread_mutex_lock(&dummy_mutex); + while (pthread_cond_timedwait(&dummy_cond, &dummy_mutex, &ts) == 0); + pthread_mutex_unlock(&dummy_mutex); } srv_log(xs_fmt("queue thread stop"));