26#ifndef _ACFUTILS_TASKQ_H_
27#define _ACFUTILS_TASKQ_H_
38typedef void *(*taskq_init_thr_t)(
void *userinfo);
39typedef void (*taskq_fini_thr_t)(
void *userinfo,
void *thr_info);
40typedef void (*taskq_proc_task_t)(
void *userinfo,
void *thr_info,
void *task);
41typedef void (*taskq_discard_task_t)(
void *userinfo,
void *task);
43API_EXPORT taskq_t *taskq_alloc(
unsigned num_threads_min,
44 unsigned num_threads_max, uint64_t thr_stop_delay_us,
45 taskq_init_thr_t init_func,taskq_fini_thr_t fini_func,
46 taskq_proc_task_t proc_func, taskq_discard_task_t discard_func,
48API_EXPORT
void taskq_free(taskq_t *tq);
50API_EXPORT
void taskq_submit(taskq_t *tq,
void *task);
51API_EXPORT
bool taskq_wants_shutdown(taskq_t *tq);
53API_EXPORT
void taskq_set_num_threads_min(taskq_t *tq,
unsigned n_threads_min);
54API_EXPORT
unsigned taskq_get_num_threads_min(
const taskq_t *tq);
55API_EXPORT
void taskq_set_num_threads_max(taskq_t *tq,
unsigned n_threads_max);
56API_EXPORT
unsigned taskq_get_num_threads_max(
const taskq_t *tq);
57API_EXPORT
void taskq_set_thr_stop_delay(taskq_t *tq, uint64_t stop_delay_us);
58API_EXPORT uint64_t taskq_get_thr_stop_delay(
const taskq_t *tq);