1。我要写一个C/S程序,服务器端程序接收请求后要进行响应的数据处理。对每个任务在另一工作线程中处理,为了避免每次AfxBeginThread浪费系统的资源,我希望AfxBeginThread一次后,设置该线程的m_bAutoDelete为FALSE,这样执行一次任务后线程还在,以后可以重复利用该线程。但现在不知道该怎样重复利用该线程,也就是重复执行那个函数?请帮我参考一下或线程池中这个是怎么实现的?2。执行AfxBeginThread函数将建立一个CWinThread对象,并将该对象和一个函数关联起来,现在我自己创建一个继承CWinThread的类,怎样在该类中执行任务?是在RUN函数里面写吗?

解决方案 »

  1.   

    See the article below, FYI: http://www.codeproject.com/threads/threadpool.asp
      

  2.   

    线程池中的每个线程有一个任务标志,线程启动后,就处于运行状态,不停地检测任务标志,若有任务,就处理,处理完成后,把任务标志置空。还有一个线程,称做调度线程,调度线程收到任务后,寻找线程池中空闲的线程,找到后把任务交给此线程处理,把任务标志置1,开始处理。
        若想做得更完好些,可以让线程在处理完成后休息。有任务时再唤醒。
    任务当然在RUN里写了。