线程池的使用场景
- 减少线程创建于销毁的开销
- 异步解耦
线程池的组成
任务
任务队列
线程
执行队列(线程队列,即所有线程)
定义
//封装一个线程
struct worker {
pthread_t id;
int terminate_flag;
struct worker *prev;
struct worker *next;
};
//相当于c++ std::packaged_task
struct job {
void (*job_func)(void *arg);
void *func_arg; //即job_func的参数
struct job *prev;
struct job *next;
};
struct threadpool {
struct worker *workers;
struct job *jobs_queue;
//用