目录
线程池相关结构体
结构体原型 |
struct task |
功能描述 |
任务实例,包含需要执行的函数及其参数,通过链表连成一个任务队列 |
结构体成员 |
void *(*do_task)(void *arg); void *arg; struct task *next; |
备注 |
任务实例最终形成一条单向链表 |
结构体原型 |
struct thread_pool |
功能描述 |
线程池实例,包含一个线程池的所有信息 |
结构体成员 |
pthread_mutex_t lock; // 互斥锁,保护任务队列 pthread_cond_t cond; // 条件变量,同步所有线程 bool shutdown; // 线程池销毁标记 struct task *task_list; // 任务链队列指针 pthread_t *tids; // 线程ID存放位置 unsigned int waiting_tasks; // 任务链队列中等待的任务个数 unsigned int active_threads; // 当前活跃线程个数 |
备注 |
活跃线程个数可修改,但至少有1条活跃线程 |
线程池函数接口
1,线程池初始化:init_pool( )
原型 |
bool init_pool(thread_pool * pool, unsigned int threads_number); |
功能描述 |
创建一个新的线程池,包含threads_number个活跃线程 |
参数 |
pool: 线程池指针 threads_number: 初始活跃线程个数(大于等于1) |
返回值 |
成功返回true,失败返回false |
所在头文件 |
thread_pool.h |
备注 |
线程池最 |