acl
3.5.3.0
|
类 | |
struct | acl_pthread_pool_attr_t |
宏定义 | |
#define | ACL_PTHREAD_POOL_DEF_THREADS 100 |
#define | ACL_PTHREAD_POOL_DEF_IDLE 0 |
#define | acl_pthread_pool_add acl_pthread_pool_add_one |
类型定义 | |
typedef struct acl_pthread_job_t | acl_pthread_job_t |
typedef struct acl_pthread_pool_t | acl_pthread_pool_t |
typedef struct acl_pthread_pool_attr_t | acl_pthread_pool_attr_t |
#define acl_pthread_pool_add acl_pthread_pool_add_one |
在文件 acl_pthread_pool.h 第 120 行定义.
#define ACL_PTHREAD_POOL_DEF_IDLE 0 |
缺省空间超时时间为 0 秒
在文件 acl_pthread_pool.h 第 45 行定义.
#define ACL_PTHREAD_POOL_DEF_THREADS 100 |
缺省最大值为 100 个线程
在文件 acl_pthread_pool.h 第 43 行定义.
typedef struct acl_pthread_job_t acl_pthread_job_t |
在文件 acl_pthread_pool.h 第 15 行定义.
typedef struct acl_pthread_pool_attr_t acl_pthread_pool_attr_t |
线程池对象属性的结构类型定义
typedef struct acl_pthread_pool_t acl_pthread_pool_t |
线程池对象结构类型定义
在文件 acl_pthread_pool.h 第 36 行定义.
ACL_API int acl_pthread_pool_add_dispatch | ( | void * | dispatch_arg, |
void(*)(void *) | run_fn, | ||
void * | run_arg | ||
) |
以批处理方式进行任务的分发, 其内部其实是调用了 acl_pthread_pool_add_one()
ACL_API void acl_pthread_pool_add_job | ( | acl_pthread_pool_t * | thr_pool, |
acl_pthread_job_t * | job | ||
) |
向线程池添加一个任务
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
job | {acl_pthread_job_t*} 由 acl_pthread_pool_alloc_job 创建的线程任务 |
ACL_API void acl_pthread_pool_add_one | ( | acl_pthread_pool_t * | thr_pool, |
void(*)(void *) | run_fn, | ||
void * | run_arg | ||
) |
向线程池添加一个任务
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
run_fn | {void (*)(*)} 当有可用工作线程时所调用的回调处理函数 |
run_arg | {void*} 回调函数 run_fn 所需要的回调参数 |
ACL_API acl_pthread_job_t* acl_pthread_pool_alloc_job | ( | void(*)(void *) | run_fn, |
void * | run_arg, | ||
int | fixed | ||
) |
创建一个线程池的工作任务
run_fn | {void (*)(void*)} 在子线程中被调用的回调函数 |
run_arg | {void*} run_fn 的回调参数之一 |
fixed | {int} |
ACL_API int acl_pthread_pool_atfree | ( | acl_pthread_pool_t * | thr_pool, |
void(*)(void *) | free_fn, | ||
void * | free_arg | ||
) |
添加注册函数,在线程退出立即执行此初函数
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
free_fn | {void (*)(void*)} 工作线程退出前必须执行的函数 |
free_arg | {void*} free_fn 所需要的参数 |
ACL_API int acl_pthread_pool_atinit | ( | acl_pthread_pool_t * | thr_pool, |
int(*)(void *) | init_fn, | ||
void * | init_arg | ||
) |
添加注册函数,在线程创建后立即执行此初始化函数
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
init_fn | {int (*)(void*)} 工作线程初始化函数, 如果该函数返回 < 0, 则该线程自动退出。 |
init_arg | {void*} init_fn 所需要的参数 |
ACL_API void acl_pthread_pool_attr_init | ( | acl_pthread_pool_attr_t * | attr | ) |
初始化线程池属性值
attr | {acl_pthread_pool_attr_t*} |
ACL_API void acl_pthread_pool_attr_set_idle_timeout | ( | acl_pthread_pool_attr_t * | attr, |
int | idle_timeout | ||
) |
设置线程池属性中线程空闲超时值
attr | {acl_pthread_pool_attr_t*} |
idle_timeout | {int} 线程空闲超时时间(秒) |
ACL_API void acl_pthread_pool_attr_set_stacksize | ( | acl_pthread_pool_attr_t * | attr, |
size_t | size | ||
) |
设置线程池属性中的最大堆栈大小(字节)
attr | {acl_pthread_pool_attr_t*} |
size | {size_t} |
ACL_API void acl_pthread_pool_attr_set_threads_limit | ( | acl_pthread_pool_attr_t * | attr, |
int | threads_limit | ||
) |
设置线程池属性中的最大线程数限制值
attr | {acl_pthread_pool_attr_t*} |
threads_limit | {int} 线程池中的最大线程数 |
ACL_API void acl_pthread_pool_bat_add_begin | ( | acl_pthread_pool_t * | thr_pool | ) |
开始进行批处理方式的添加任务, 实际上是开始进行加锁
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
ACL_API void acl_pthread_pool_bat_add_end | ( | acl_pthread_pool_t * | thr_pool | ) |
批处理添加结束, 实际是解锁
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
ACL_API void acl_pthread_pool_bat_add_job | ( | acl_pthread_pool_t * | thr_pool, |
acl_pthread_job_t * | job | ||
) |
添加一个新任务, 前提是已经成功加锁, 即调用 acl_pthread_pool_bat_add_begin 成功
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
job | {acl_pthread_job_t*} 由 acl_pthread_pool_alloc_job 创建的线程任务 |
ACL_API void acl_pthread_pool_bat_add_one | ( | acl_pthread_pool_t * | thr_pool, |
void(*)(void *) | run_fn, | ||
void * | run_arg | ||
) |
添加一个新任务, 前提是已经成功加锁, 即调用 acl_pthread_pool_bat_add_begin 成功
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
run_fn | {void (*)(void*)} 当有可用工作线程时所调用的回调处理函数 |
run_arg | 回调函数 run_fn 所需要的回调参数 |
ACL_API int acl_pthread_pool_busy | ( | acl_pthread_pool_t * | thr_pool | ) |
获得当前线程池中的繁忙线程数
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
ACL_API acl_pthread_pool_t* acl_pthread_pool_create | ( | const acl_pthread_pool_attr_t * | attr | ) |
创建一个线程池对象
attr | {acl_pthread_pool_attr_t*} 线程池创建时的属性,如果该参数为空, 则采用默认参数: ACL_PTHREAD_POOL_DEF_XXX |
ACL_API int acl_pthread_pool_destroy | ( | acl_pthread_pool_t * | thr_pool | ) |
销毁一个线程池对象, 成功销毁后该对象不能再用.
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
ACL_API int acl_pthread_pool_dispatch | ( | void * | dispatch_arg, |
void(*)(void *) | run_fn, | ||
void * | run_arg | ||
) |
以单个添加的方式进行任务的分发
ACL_API void acl_pthread_pool_free_job | ( | acl_pthread_job_t * | job | ) |
释放由 acl_pthread_pool_alloc_job 创建的工作任务
job | {acl_pthread_job_t*} |
ACL_API int acl_pthread_pool_idle | ( | acl_pthread_pool_t * | thr_pool | ) |
获得当前线程池中的空闲线程数
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
ACL_API int acl_pthread_pool_limit | ( | acl_pthread_pool_t * | thr_pool | ) |
获得当前线程池的最大线程数限制
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
ACL_API int acl_pthread_pool_qlen | ( | acl_pthread_pool_t * | thr_pool | ) |
取得当前线程池全局队列中未处理的任务个数
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
ACL_API void acl_pthread_pool_set_poller | ( | acl_pthread_pool_t * | thr_pool, |
int(*)(void *) | poller_fn, | ||
void * | poller_arg | ||
) |
设置线程池 POLLER 调度函数,若要使用此功能,需要在用函数 acl_pthread_pool_create 后通过此函数设置调度函数,然后再 调用 acl_pthread_pool_start_poller 启动后台调度函数,该后台 调度函数会不断地调用 poller_fn (即用户的回调函数),用户可以 在回调函数里调用 acl_pthread_pool_add 将新任务添加进线程池中
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
poller_fn | {int (*)(void*)} 循环检测任务队列的回调函数 |
poller_arg | {void*} poller_fn 所需要的参数 |
ACL_API void acl_pthread_pool_set_qlen_warn | ( | acl_pthread_pool_t * | thr_pool, |
int | max | ||
) |
当线程池中的任务发生堆积时,通过该函数设置任务队列堆积报警值
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
max | {int} 任务队列堆积报警值 |
ACL_API void acl_pthread_pool_set_schedule_wait | ( | acl_pthread_pool_t * | thr_pool, |
acl_int64 | n | ||
) |
设置线程池中子线程等待任务的超时基准时间(毫秒)
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
n | {acl_int64} 当该值 > 0 时,子线程等待任务的超时等待基准时间(毫秒) |
ACL_API void acl_pthread_pool_set_schedule_warn | ( | acl_pthread_pool_t * | thr_pool, |
acl_int64 | n | ||
) |
设置线程任务调度超时警告的时间(毫秒)
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
n | {acl_int64} 当该值 > 0 时,如果线程任务的调度时间超过此值则会记录警告日志(毫秒) |
ACL_API void acl_pthread_pool_set_stacksize | ( | acl_pthread_pool_t * | thr_pool, |
size_t | size | ||
) |
设置线程池中线程的堆栈大小
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
size | {size_t} 线程创建时的堆栈大小,单位为字节 |
ACL_API int acl_pthread_pool_set_timewait | ( | acl_pthread_pool_t * | thr_pool, |
int | timewait_sec | ||
) |
当队列堆积的任务数大于空闲线程数的2倍时. 通过此函数设置添加任务的 线程休眠时间, 如果不调用此函数进行设置, 则添加线程不会进入休眠状态.
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
timewait_sec | {int} 休眠 的时间值, 建议将此值设置为 1–5 秒内 |
ACL_API int acl_pthread_pool_size | ( | acl_pthread_pool_t * | thr_pool | ) |
获得当前线程池中的线程数
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
ACL_API int acl_pthread_pool_start_poller | ( | acl_pthread_pool_t * | thr_pool | ) |
启动一个线程池 POLLER 调度线程
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
ACL_API int acl_pthread_pool_stop | ( | acl_pthread_pool_t * | thr_pool | ) |
暂停一个线程池对象的运行, 停止后还可以再运行.
thr_pool | {acl_pthread_pool_t*} 线程池对象,不能为空 |
ACL_API acl_pthread_pool_t* acl_thread_pool_create | ( | int | threads_limit, |
int | idle_timeout | ||
) |
更简单地创建线程对象的方法
threads_limit | {int} 线程池中最大并发线程数 |
idle_timeout | {int} 工作线程空闲超时退出时间(秒) |