子线程含有阻塞代码。现有两种方案:一。平时程序只有一个主线程,一遇到请求就同时产生一百个子线程。所有子线程处理完后就ExitThread。
二。平时保持着一百个休眠的子线程,当主线程遇到请求时就一一唤醒子线程们进行处理。子线程们处理完后就进入体眠状态。我知道过多的活动子线程会令系统消耗大量的CPU时间在切换到不同线程,但休眠线程还需要系统切换以致消耗CPU时间吗?

解决方案 »

  1.   

    休眠的线程CPU分配的优先级很底,所以CPU占用是不太大的。就算不占用CUP,占用内内存存也是不好的,不如一一创建
      

  2.   

    读后感:1.内存如粪土
    2.我觉得一百个"唤醒"动作要比一百个"启动"动作要快多了。
    3.会阻塞的线程means不是全力工作,不会累坏服务器。
      

  3.   

    休眠线程还需要系统切换以消耗CPU时间!!具体说说怎么同时产生一百个子线程????
      

  4.   

    不会的,apache的win32版默认开了250个线程等待请求,在普通pc上也没看到有什么速度影响
      

  5.   

    我个人认为你的第二个方案比较可行,第一个方案绝对不可行。有一点你要清楚,处于阻塞态的线程是不占任何cpu资源的,如果你读过任何一个操作系统(比如linux)的内核源代码就会明白这一点。所以当100个线程处于阻塞态时,仅仅是占用一些内存,只有当被阻塞的线程被唤醒时才有可能被调度程序调度,因此我觉得你的第二个方案可行,而第一个方案一次要启动太多的线程,如果比较频繁,将会使效率大大降低。