X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsel_thread.c;h=0677761950048a9d99394e606d3808604a1f01e9;hb=858ad41c7c599d44c700c2e8eaab3131ad4011aa;hp=0139c07cfaf33a687b9061f98bddfa99a5002d02;hpb=f89a08d579f270d78b6e48a04ec63cef23539c88;p=pazpar2-moved-to-github.git diff --git a/src/sel_thread.c b/src/sel_thread.c index 0139c07..0677761 100644 --- a/src/sel_thread.c +++ b/src/sel_thread.c @@ -1,5 +1,5 @@ /* This file is part of Pazpar2. - Copyright (C) 2006-2008 Index Data + Copyright (C) 2006-2010 Index Data Pazpar2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -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; @@ -216,7 +221,9 @@ void *sel_thread_result(sel_thread_t p) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab */ +