1)线程池 PoolThread
线程池可以避免在处理短时间任务时创建与销毁线程的代价,它维护着多个线程,等待着监督管理者分配可并发执行的任务,从而提高了整体性能
2)单例类
static ThreadPool& instance() {
//局部静态变量,单例类只构造一次
static ThreadPool ins;
return ins;
}
3)线程池逻辑
构造单例,start函数启动线程池
初始化n个线程,每个线程中等待队列产生任务(条件变量)
任务到来,线程被唤醒,移动任务对象(std::package_task)到线程中;
线程总数-1
执行task
commit:提交任务到线程池
绑定任务到task,使用task.getfuture()获取返回值
将task加入队列
唤醒某个线程