diff options
author | Thomas White <taw@bitwiz.org.uk> | 2011-07-02 23:21:31 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2012-02-22 15:27:31 +0100 |
commit | 47ba16fe47a0f4802d9744b3886e650fc3ae6fa7 (patch) | |
tree | f7b21355eb2109694eed0b527eecb50f4c6d31f7 /src/thread-pool.h | |
parent | 88cd387d8e0e7e1e6271a3df2fe10e7722ee5976 (diff) |
Work on documentation
Diffstat (limited to 'src/thread-pool.h')
-rw-r--r-- | src/thread-pool.h | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/src/thread-pool.h b/src/thread-pool.h index eb7fb99c..a99a7ade 100644 --- a/src/thread-pool.h +++ b/src/thread-pool.h @@ -23,8 +23,47 @@ extern pthread_mutex_t stderr_lock; extern signed int get_status_label(void); -extern int run_threads(int n_threads, void (*work)(void *, int), - void *(*get_task)(void *), void (*final)(void *, void *), + +/** + * TPGetTaskFunc: + * @qargs: The queue_args pointer which was given to run_threads(). + * Returns: A pointer which will be passed to the worker function. + * + * This function is called, non-reentrantly, to get a new work item to give to + * your work function. The stuff you need to generate the new work item should + * have been stored in @qargs which was passed to run_threads(). + * + **/ +typedef void *(*TPGetTaskFunc)(void *qargs); + + +/** + * TPWorkFunc: + * @work: The queue_args pointer which was given to run_threads(). + * @cookie: A small integral number which is guaranteed to be unique among all + * currently running threads. + * + * This function is called, reentrantly, for each work item. + * + **/ +typedef void (*TPWorkFunc)(void *work, int cookie); + + +/** + * TPFinalFunc: + * @qargs: The queue_args pointer which was given to run_threads(). + * @work: The pointer which was returned by your get_task function. + * + * This function is called, non-reentrantly, after each work item has been + * completed. A typical use might be to update some counters inside @qargs + * according to fields withing @work which were filled by your 'work' function. + * + **/ +typedef void (*TPFinalFunc)(void *qargs, void *work); + + +extern int run_threads(int n_threads, TPWorkFunc work, + TPGetTaskFunc get_task, TPFinalFunc final, void *queue_args, int max, int cpu_num, int cpu_groupsize, int cpu_offset); |