From eb834c44f91410d190eedb27c731943fec1f5153 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 9 Jan 2015 18:08:41 +0100 Subject: [SERVER] Support blocking signals, saves a syscall in threadpool --- src/server/threadpool.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/server/threadpool.c') diff --git a/src/server/threadpool.c b/src/server/threadpool.c index 34e996c..fd90944 100644 --- a/src/server/threadpool.c +++ b/src/server/threadpool.c @@ -60,7 +60,7 @@ bool threadpool_run(void *(*startRoutine)(void *), void *arg) printf( "[WARNING] Could not alloc entry_t for new thread\n" ); return false; } - entry->signalFd = signal_new(); + entry->signalFd = signal_newBlocking(); if ( entry->signalFd < 0 ) { printf( "[WARNING] Could not create signalFd for new thread pool thread\n" ); free( entry ); @@ -90,7 +90,7 @@ static void *threadpool_worker(void *entryPtr) entry_t *entry = (entry_t*)entryPtr; for ( ;; ) { // Wait for signal from outside that we have work to do - int ret = signal_wait( entry->signalFd, -1 ); + int ret = signal_clear( entry->signalFd ); if ( _shutdown ) break; if ( ret > 0 ) { if ( entry->startRoutine == NULL ) { -- cgit v1.2.3-55-g7522