实现线程池时,遇到一个有关问题,就是线程怎么实现重复使用

【求助】实现线程池时,遇到一个问题,就是线程如何实现重复使用?
在线程池里调用一个线程完成任务后,线程池会将线程置于空闲,等待下个任务。但是线程被调用以后,会撤销线程相关资源,无法再被调用;所以,我只能重新创建一个新线程放到线程池中。但这样效率不是很高,请问线程池是如何实现同一个线程可以反复执行任务的呢?

------解决方案--------------------
个人想法:
你需要把资源封包。
把“包”也放到某个池里。用的时候直接分配“包关联”、初始化资源就好了。

个人觉得,关于线程对象的创建销毁,内核实现起来应该是非常快的。大部分时间片都用在了资源的申请上。


------解决方案--------------------
把任务排队,线程一个个去调用
------解决方案--------------------
我的问题是线程调用一个任务后,线程就会被销毁,谁叫你这么做的
------解决方案--------------------
http://jacky-dai.iteye.com/blog/1090285
------解决方案--------------------
线程池中的线程,初始化的时候先启动 n 个线程,都处于挂起状态,需要使用的时候唤醒,使用完成后再让其挂起,等待下一次的启动,而不是销毁。明白?
------解决方案--------------------
声明一个使主线程和辅助线程 同时 可见的 变量 ,使用 关键段限制访问,修改 就好了
------解决方案--------------------
探讨

任务肯定是排队好的了呀,我的问题是线程调用一个任务后,线程就会被销毁,然后又要重新创建新的线程放到线程池里。

但是线程池的概念是线程完成任务后,处于空闲态,准备完成下一个任务。使用线程池的有点就是不需要频繁去创建和销毁线程,但是这个是如何实现的?

------解决方案--------------------
不要让线程退出就是了撒。
用这个控制
WaitForMultipleObjects

while (TRUE)
{
dwWaitRtn = WaitForMultipleObjects(2,hWriteHandle,FALSE,8000);
if (dwWaitRtn == WAIT_OBJECT_0)
{
Task();
}

if (dwWaitRtn == WAIT_TIMEOUT)
{
//exit
}
}