线程池 C++(在线等)
线程池
创建一个线程类对象 线程
。。。等待
。。。 运行
返回
空闲队列
注释:线程池里创建线程对象,然后线程启动,进入“等待任务”状态,我现在想问的是线程运行完之后怎么返回到线程池中的“空闲队列”中。急....
[解决办法]
……在线程即将退出的时候将其入空闲队列,或者是改变一个标志位,由管理线程发现其状态是“空闲”。
[解决办法]
定义一个GetTask函数,
如果队列有task直接返回,否则将线程投入到空闲队列中。
有新的task进入管理线程的队列时,管理线程从空闲队列中选择一个空闲线程,将其唤醒
并将task交给这个线程,空闲线程此时从GetTask中返回并获得task.
while(task = GetTask())
{
// do task
}