Tor 0.4.9.2-alpha-dev
|
Data Fields | |
struct workerthread_t ** | threads |
tor_cond_t | condition |
work_tailq_t | work [WORKQUEUE_N_PRIORITIES] |
unsigned | generation |
workqueue_reply_t(* | update_fn )(void *, void *) |
void(* | free_update_arg_fn )(void *) |
void ** | update_args |
struct event * | reply_event |
void(* | reply_cb )(threadpool_t *) |
int | n_threads |
int | n_threads_max |
tor_mutex_t | lock |
replyqueue_t * | reply_queue |
void *(* | new_thread_state_fn )(void *) |
void(* | free_thread_state_fn )(void *) |
void * | new_thread_state_arg |
int | exit |
tor_mutex_t | control_lock |
A thread-pool manages starting threads and passing work to them.
Definition at line 53 of file workqueue.c.
tor_cond_t condition |
Condition variable that we wait on when we have no work, and which gets signaled when our queue becomes nonempty.
Definition at line 60 of file workqueue.c.
Referenced by threadpool_stop_threads().
tor_mutex_t control_lock |
Mutex for controlling worker threads' startup and exit.
Definition at line 97 of file workqueue.c.
Referenced by worker_thread_main().
int exit |
Used for signalling the worker threads to exit.
Definition at line 95 of file workqueue.c.
Referenced by threadpool_stop_threads().
void(* free_thread_state_fn) (void *) |
Definition at line 91 of file workqueue.c.
void(* free_update_arg_fn) (void *) |
Function to free update arguments if they can't be run.
Definition at line 72 of file workqueue.c.
Referenced by threadpool_queue_update().
unsigned generation |
The current 'update generation' of the threadpool. Any thread that is at an earlier generation needs to run the update function.
Definition at line 67 of file workqueue.c.
tor_mutex_t lock |
Mutex to protect all the above fields.
Definition at line 84 of file workqueue.c.
Referenced by threadpool_queue_update(), and threadpool_stop_threads().
int n_threads |
Number of elements in threads.
Definition at line 80 of file workqueue.c.
Referenced by threadpool_get_n_threads(), and threadpool_queue_update().
int n_threads_max |
Number of elements to be created in threads.
Definition at line 82 of file workqueue.c.
void* new_thread_state_arg |
Definition at line 92 of file workqueue.c.
void *(* new_thread_state_fn) (void *) |
Functions used to allocate and free thread state.
Definition at line 90 of file workqueue.c.
void(* reply_cb) (threadpool_t *) |
Definition at line 77 of file workqueue.c.
struct event* reply_event |
Event to notice when another thread has sent a reply.
Definition at line 76 of file workqueue.c.
Referenced by threadpool_register_reply_event().
replyqueue_t* reply_queue |
A reply queue to use when constructing new threads.
Definition at line 87 of file workqueue.c.
Referenced by reply_event_cb(), and threadpool_get_replyqueue().
struct workerthread_t** threads |
An array of pointers to workerthread_t: one for each running worker thread.
Definition at line 56 of file workqueue.c.
void** update_args |
Array of n_threads update arguments.
Definition at line 74 of file workqueue.c.
Referenced by threadpool_queue_update().
workqueue_reply_t(* update_fn) (void *, void *) |
Function that should be run for updates on each thread.
Definition at line 70 of file workqueue.c.
work_tailq_t work[WORKQUEUE_N_PRIORITIES] |
Queues of pending work that we have to do. The queue with priority p is work[p].
Definition at line 63 of file workqueue.c.
Referenced by queue_reply(), and worker_thread_main().