pazpar2  1.13.0
Typedefs | Functions
sel_thread.h File Reference
#include <yaz/yconfig.h>

Go to the source code of this file.

Typedefs

typedef struct sel_threadsel_thread_t
 select thread handler type More...
 

Functions

sel_thread_t sel_thread_create (void(*work_handler)(void *work_data), void(*work_destroy)(void *work_data), int *read_fd, int no_of_threads)
 creates select thread More...
 
void sel_thread_destroy (sel_thread_t p)
 destorys select thread More...
 
void sel_thread_add (sel_thread_t p, void *data)
 adds work to be carried out in thread More...
 
void * sel_thread_result (sel_thread_t p)
 gets result of work More...
 

Typedef Documentation

typedef struct sel_thread* sel_thread_t

select thread handler type

Definition at line 27 of file sel_thread.h.

Function Documentation

void sel_thread_add ( sel_thread_t  p,
void *  data 
)

adds work to be carried out in thread

Parameters
pselect thread handler
datapointer to data that work_handler knows about

Definition at line 205 of file sel_thread.c.

References work_item::data, sel_thread::free_queue, sel_thread::input_data, sel_thread::input_queue, sel_thread::mutex, work_item::next, and sel_thread::nmem.

Referenced by iochan_handler(), and run_fun().

sel_thread_t sel_thread_create ( void(*)(void *work_data)  work_handler,
void(*)(void *work_data)  work_destroy,
int *  read_fd,
int  no_of_threads 
)

creates select thread

Parameters
work_handlerhandler that does work in worker thread
work_destroyoptional destroy handler for work (0 = no handler)
read_fdpointer to readable socket upon completion
no_of_threadsnumber of worker threads
Returns
select thread handler

Creates a worker thread. The worker thread will signal "completed" work by sending one byte to the read_fd file descriptor. You are supposed to select or poll on that for reading and call sel_thread_result accordingly.

Definition at line 129 of file sel_thread.c.

References sel_thread::free_queue, sel_thread::input_data, sel_thread::input_queue, sel_thread::mutex, sel_thread::nmem, sel_thread::no_threads, sel_thread::output_queue, sel_thread::read_fd, sel_thread_destroy(), sel_thread_handler(), sel_thread::spipe, sel_thread::stop_flag, sel_thread::thread_id, work_destroy(), sel_thread::work_destroy, sel_thread::work_handler, work_handler(), and sel_thread::write_fd.

Referenced by iochan_man_events(), test_create_destroy(), and test_for_real_work().

void sel_thread_destroy ( sel_thread_t  p)
void* sel_thread_result ( sel_thread_t  p)

gets result of work

Parameters
pselect thread handler
Returns
data for work (which work_handler has been working on)

Definition at line 230 of file sel_thread.c.

References work_item::data, sel_thread::free_queue, sel_thread::mutex, work_item::next, sel_thread::output_queue, queue_remove_last(), and sel_thread::read_fd.

Referenced by event_loop(), and iochan_handler().