Tor 0.4.9.2-alpha-dev
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Data Fields
threadpool_t Struct Reference

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_treply_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
 

Detailed Description

A thread-pool manages starting threads and passing work to them.

Definition at line 53 of file workqueue.c.

Field Documentation

◆ condition

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().

◆ control_lock

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().

◆ exit

int exit

Used for signalling the worker threads to exit.

Definition at line 95 of file workqueue.c.

Referenced by threadpool_stop_threads().

◆ free_thread_state_fn

void(* free_thread_state_fn) (void *)

Definition at line 91 of file workqueue.c.

◆ free_update_arg_fn

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().

◆ generation

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.

◆ 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().

◆ n_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().

◆ n_threads_max

int n_threads_max

Number of elements to be created in threads.

Definition at line 82 of file workqueue.c.

◆ new_thread_state_arg

void* new_thread_state_arg

Definition at line 92 of file workqueue.c.

◆ new_thread_state_fn

void *(* new_thread_state_fn) (void *)

Functions used to allocate and free thread state.

Definition at line 90 of file workqueue.c.

◆ reply_cb

void(* reply_cb) (threadpool_t *)

Definition at line 77 of file workqueue.c.

◆ reply_event

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().

◆ reply_queue

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().

◆ threads

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.

◆ update_args

void** update_args

Array of n_threads update arguments.

Definition at line 74 of file workqueue.c.

Referenced by threadpool_queue_update().

◆ update_fn

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

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().


The documentation for this struct was generated from the following file: