ThreadPool与Thead都为重新封装的类
Thread 内实现了Pause(暂停),Resume(挂起),Start(开始),Stop(停止),Run(运行)函数
Thread的Pause Resume参数均为thread::id.
Thread创建时候传入一个nullptr。让他阻塞掉。
在Start时候,传入任务。
ThreadPool内实现了addTask,Start,Pause,Resume等函数
ThreadPool中的Pause和Resume内部调用Thread的Pause和Resume。
ThreadPool中的AddTask函数:
判断任务队列是否满了,如果满了,直接Wait。否则添加到任务队列中,从线程池中找寻一个空的线程执行任务,调用notify唤醒该线程。
ThreadPool内部含有 vector<Thread*>,任务队列。当任务队列满的时候,会进行阻塞,当某个线程执行完任务,重新notify。
当前缺点!!!! 线程池与线程存在强关联性,线程内记录了当前线程池的指针。