线程池包含哪些东西:
1.任务集合
2.执行单元集合(线程集合)
3.管理组件(线程池)
1.加锁,2.条件等待,3.任务栈指针,4.线程栈指针
图 1
任务单元结构
typedef struct Task{
void (*func)(void *); //任务函数指针(回调函数) 参数、返回不确定:定义void *
void *param_data; //回调函数参数, 类型不确定void *
struct Task *pre; //前驱节点
struct Task *next; //后继节点
}TASK;
执行单元栈结构:线程集合的封装
图 2 线程队列
typedef struct Execute{
prhead_t threadid; //线程ID
struct Execute *pre;
struct Execute *next;
}EXECUTE;
管理组件
typedef struct Manager{
TASK *ntask;
EXECUTE *execute;
int shutdown; // 销毁标志
pthread_mutex_t lock;
pthread_cond_t cond;
}MANAGER;
添加任务: