acl  3.5.3.0
acl::thread_pool类 参考

#include <thread_pool.hpp>

+ 类 acl::thread_pool 继承关系图:
+ acl::thread_pool 的协作图:

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_poolset_stacksize (size_t size)
 
thread_poolset_limit (size_t max)
 
size_t get_limit (void) const
 
thread_poolset_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.hpp17 行定义.

构造及析构函数说明

◆ thread_pool()

acl::thread_pool::thread_pool ( void  )

◆ ~thread_pool()

virtual acl::thread_pool::~thread_pool ( void  )
virtual

成员函数说明

◆ execute()

bool acl::thread_pool::execute ( thread_job job)

将一个任务交给线程池中的一个线程去执行,线程池中的 线程会执行该任务中的 run 函数;该函数功能与 run 功能完全相同,只是为了 使 JAVA 程序员看起来更为熟悉才提供了此接口

参数
job{thread_job*} 线程任务
返回
{bool} 是否成功

◆ get_limit()

size_t acl::thread_pool::get_limit ( void  ) const

获得当前线程池最大线程数量限制

返回
{size_t}

◆ run()

bool acl::thread_pool::run ( thread_job job)

将一个任务交给线程池中的一个线程去执行,线程池中的 线程会执行该任务中的 run 函数

参数
job{thread_job*} 线程任务
返回
{bool} 是否成功

◆ set_idle()

thread_pool& acl::thread_pool::set_idle ( int  ttl)

设置线程池中空闲线程的超时退出时间

参数
ttl{int} 空闲超时时间(秒),如果不调用此函数,则内部缺省为 0
返回
{thread_pool&}

◆ set_limit()

thread_pool& acl::thread_pool::set_limit ( size_t  max)

设置线程池最大线程个数限制

参数
max{size_t} 最大线程数,如果不调用此函数,则内部缺省值为 100
返回
{thread_pool&}

◆ set_stacksize()

thread_pool& acl::thread_pool::set_stacksize ( size_t  size)

在调用 start 前调用此函数可以设置所创建线程的堆栈大小

参数
size{size_t} 线程堆栈大小,当该值为 0 或未 调用此函数,则所创建的线程堆栈大小为系统的默认值
返回
{thread&}

◆ start()

void acl::thread_pool::start ( void  )

启动线程池,在创建线程池对象后,必须首先调用此函数以启动线程池

◆ stop()

void acl::thread_pool::stop ( void  )

停止并销毁线程池,并释放线程池资源,调用此函数可以使所有子线程退出, 但并不释放本实例,如果该类实例是动态分配的则用户应该自释放类实例, 在调用本函数后,如果想重启线程池过程,则必须重新调用 start 过程

◆ task_qlen()

int acl::thread_pool::task_qlen ( void  ) const

获得当前线程池中未被处理的任务数量

返回
{int} 当线程池还未被启动(即未调用 start)或已经销毁则返回 -1

◆ thread_on_exit()

virtual void acl::thread_pool::thread_on_exit ( void  )
inlineprotectedvirtual

当线程池中的子线程退出时,该虚函数将被调用,用户可以 在自己的实现 中做一些资源释放工作

在文件 thread_pool.hpp110 行定义.

110 {}

◆ thread_on_init()

virtual bool acl::thread_pool::thread_on_init ( void  )
inlineprotectedvirtual

当线程池中的子线程第一次被创建时,该虚函数将被调用, 用户可以在自己的实现中做一些初始化工作

返回
{bool} 初始化是否成功

在文件 thread_pool.hpp104 行定义.

104 { return true; }

◆ threads_count()

int acl::thread_pool::threads_count ( void  ) const

获得当前线程池中子线程的数量

返回
{int} 返回线程池中子线程的数量,如果未通过调用 start 启动线程池过程,则该函数返回 -1

◆ wait()

void acl::thread_pool::wait ( void  )

等待线程池中的所有线程池执行完所有任务


该类的文档由以下文件生成: