acl
3.5.3.0
|
#include <thread_pool.hpp>
Public 成员函数 | |
thread_pool (void) | |
virtual | ~thread_pool (void) |
void | start (void) |
void | stop (void) |
void | wait (void) |
bool | run (thread_job *job) |
bool | execute (thread_job *job) |
thread_pool & | set_stacksize (size_t size) |
thread_pool & | set_limit (size_t max) |
size_t | get_limit (void) const |
thread_pool & | set_idle (int ttl) |
int | threads_count (void) const |
int | task_qlen (void) const |
Protected 成员函数 | |
virtual bool | thread_on_init (void) |
virtual void | thread_on_exit (void) |
Protected 成员函数 继承自 acl::acl::noncopyable | |
noncopyable () | |
~noncopyable () | |
线程池管理类,该类内管理的线程池中的线程是半驻留的(即当线程空闲一定时间后 自动退出),该类有两个非纯虚函数:thread_on_init(线程池中的某个线程第一次 创建时会首先调用此函数),thread_on_exit(线程池中的某个线程退出时调用此函数)
在文件 thread_pool.hpp 第 17 行定义.
acl::thread_pool::thread_pool | ( | void | ) |
|
virtual |
bool acl::thread_pool::execute | ( | thread_job * | job | ) |
将一个任务交给线程池中的一个线程去执行,线程池中的 线程会执行该任务中的 run 函数;该函数功能与 run 功能完全相同,只是为了 使 JAVA 程序员看起来更为熟悉才提供了此接口
job | {thread_job*} 线程任务 |
size_t acl::thread_pool::get_limit | ( | void | ) | const |
获得当前线程池最大线程数量限制
bool acl::thread_pool::run | ( | thread_job * | job | ) |
将一个任务交给线程池中的一个线程去执行,线程池中的 线程会执行该任务中的 run 函数
job | {thread_job*} 线程任务 |
thread_pool& acl::thread_pool::set_idle | ( | int | ttl | ) |
thread_pool& acl::thread_pool::set_limit | ( | size_t | max | ) |
thread_pool& acl::thread_pool::set_stacksize | ( | size_t | size | ) |
在调用 start 前调用此函数可以设置所创建线程的堆栈大小
size | {size_t} 线程堆栈大小,当该值为 0 或未 调用此函数,则所创建的线程堆栈大小为系统的默认值 |
void acl::thread_pool::start | ( | void | ) |
启动线程池,在创建线程池对象后,必须首先调用此函数以启动线程池
void acl::thread_pool::stop | ( | void | ) |
停止并销毁线程池,并释放线程池资源,调用此函数可以使所有子线程退出, 但并不释放本实例,如果该类实例是动态分配的则用户应该自释放类实例, 在调用本函数后,如果想重启线程池过程,则必须重新调用 start 过程
int acl::thread_pool::task_qlen | ( | void | ) | const |
获得当前线程池中未被处理的任务数量
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
int acl::thread_pool::threads_count | ( | void | ) | const |
获得当前线程池中子线程的数量
void acl::thread_pool::wait | ( | void | ) |
等待线程池中的所有线程池执行完所有任务