线程池
把之前做的笔记一次性挪到博客上好喽
这是一个固定数量的线程池,线程任务可带参数,异步返回返回值,本菜鸡花了一天才看明白这是怎么回事,用到了很多c++11的特性,比如bind function future等
class ThreadPool{
public:
using Function = std::function<void()>; /* 成员函数 push-task 任务队列推进去一个任务 构造函数 */
ThreadPool(int i);
~ThreadPool();
template<class F,class ...Args>
auto push_task(F &&f,Args &&...args)->
std::future<typename std::result_of<F(Args...)>::type>;
private:
/*私有成员 任务队列一个 一个锁 一个条件变量 一个bool 一个vector保存线程 */ std::queue<Function,std::list<Function>> Tasks;
std::vector<std::thread