X-Git-Url: http://git.indexdata.com/?p=pazpar2-moved-to-github.git;a=blobdiff_plain;f=src%2Fsel_thread.c;h=7d1d6e20ee8263ca841269b074bdd7b2c934b58e;hp=6ce0f2abb55f65b550cd42935786ef9db9ecf3e9;hb=HEAD;hpb=8351b07cbbd0deab140944ce7ededa3d52ddb41c diff --git a/src/sel_thread.c b/src/sel_thread.c index 6ce0f2a..7d1d6e2 100644 --- a/src/sel_thread.c +++ b/src/sel_thread.c @@ -1,5 +1,5 @@ /* This file is part of Pazpar2. - Copyright (C) 2006-2010 Index Data + Copyright (C) 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 @@ -24,7 +24,12 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "sel_thread.h" #include #include +#if HAVE_UNISTD_H #include +#endif +#ifdef WIN32 +#include +#endif #include #include #include @@ -94,14 +99,16 @@ static void *sel_thread_handler(void *vp) assert(p->input_queue); work_this = queue_remove_last(&p->input_queue); input_queue_length--; +#if 0 yaz_log(YLOG_DEBUG, "input queue length after pop: %d", input_queue_length); +#endif assert(work_this); yaz_mutex_leave(p->mutex); /* work on this item */ p->work_handler(work_this->data); - + /* put it back into output queue */ yaz_mutex_enter(p->mutex); work_this->next = p->output_queue; @@ -114,7 +121,7 @@ static void *sel_thread_handler(void *vp) #else (void) write(p->write_fd, "", 1); #endif - } + } yaz_mutex_leave(p->mutex); return 0; } @@ -144,7 +151,7 @@ sel_thread_t sel_thread_create(void (*work_handler)(void *work_data), { nmem_destroy(nmem); return 0; - } + } *read_fd = p->read_fd = yaz_spipe_get_read_fd(p->spipe); p->write_fd = yaz_spipe_get_write_fd(p->spipe); @@ -179,7 +186,7 @@ void sel_thread_destroy(sel_thread_t p) p->stop_flag = 1; yaz_cond_broadcast(p->input_data); yaz_mutex_leave(p->mutex); - + for (i = 0; i< p->no_threads; i++) yaz_thread_join(&p->thread_id[i], 0); @@ -213,7 +220,9 @@ void sel_thread_add(sel_thread_t p, void *data) work_p->next = p->input_queue; p->input_queue = work_p; input_queue_length++; +#if 0 yaz_log(YLOG_DEBUG, "sel_thread_add: Input queue length after push: %d", input_queue_length); +#endif yaz_cond_signal(p->input_data); yaz_mutex_leave(p->mutex); } @@ -233,7 +242,7 @@ void *sel_thread_result(sel_thread_t p) /* put freed item in free list */ work_this->next = p->free_queue; p->free_queue = work_this; - + data = work_this->data; #ifdef WIN32 (void) recv(p->read_fd, read_buf, 1, 0);