X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsel_thread.c;h=0677761950048a9d99394e606d3808604a1f01e9;hb=61027e68ea2f9c307a289b9cf8cc1be2cceb13d3;hp=bb52c3cca303027e129728ed1a5784227a477142;hpb=ba5951a80fdd0da1d28c318852b69a1178cd6bfa;p=pazpar2-moved-to-github.git diff --git a/src/sel_thread.c b/src/sel_thread.c index bb52c3c..0677761 100644 --- a/src/sel_thread.c +++ b/src/sel_thread.c @@ -69,11 +69,13 @@ struct sel_thread { void (*work_destroy)(void *work_data); }; +static int input_queue_length = 0; + static void *sel_thread_handler(void *vp) { sel_thread_t p = (sel_thread_t) vp; - while(1) + while (1) { struct work_item *work_this = 0; /* wait for some work */ @@ -87,6 +89,8 @@ static void *sel_thread_handler(void *vp) assert(p->input_queue); work_this = queue_remove_last(&p->input_queue); + input_queue_length--; + yaz_log(YLOG_DEBUG, "input queue length after pop: %d", input_queue_length); assert(work_this); pthread_mutex_unlock(&p->mutex); @@ -101,7 +105,7 @@ static void *sel_thread_handler(void *vp) pthread_mutex_unlock(&p->mutex); /* wake up select/poll with a single byte */ - write(p->fd[1], "", 1); + (void) write(p->fd[1], "", 1); } pthread_mutex_unlock(&p->mutex); return 0; @@ -140,7 +144,7 @@ sel_thread_t sel_thread_create(void (*work_handler)(void *work_data), p->thread_id = nmem_malloc(nmem, sizeof(*p->thread_id) * p->no_threads); for (i = 0; i < p->no_threads; i++) - pthread_create (p->thread_id + i, 0, sel_thread_handler, p); + pthread_create(p->thread_id + i, 0, sel_thread_handler, p); return p; } @@ -185,7 +189,8 @@ void sel_thread_add(sel_thread_t p, void *data) work_p->data = data; work_p->next = p->input_queue; p->input_queue = work_p; - + input_queue_length++; + yaz_log(YLOG_DEBUG, "sel_thread_add: Input queue length after push: %d", input_queue_length); pthread_cond_signal(&p->input_data); pthread_mutex_unlock(&p->mutex); } @@ -207,7 +212,7 @@ void *sel_thread_result(sel_thread_t p) p->free_queue = work_this; data = work_this->data; - read(p->fd[0], read_buf, 1); + (void) read(p->fd[0], read_buf, 1); } pthread_mutex_unlock(&p->mutex); return data;