我的做法是开20个线程,然后挂起,只到有客户的请求。如果有20个人同时来联接,就每人一个线程,如果来了40个,就每线程两个,有先后。如果每个线程处理为20个,则这个服务器的处理能力就有400个在线,并发处理能力为20同时。如果每个的处理时间为2秒,这种结构是很高效的。
我做过一个类似的服务程序,同时200个联接,客户端不停的收发数据。CPU的利用为30%.(只有数据收发操作,没有其他的操作)。处理完一个请求,然后继续挂起,不占用CPU时间。

解决方案 »

  1.   

    如果性能要求不是特别高,没必要用线程池。
    如果对性能要求很苛刻,用IOCP,它已经实现了线程池的管理。因此,无论如何,通讯server总是不需要你来实现线程池的。
      

  2.   

    “如果每个的处理时间为2秒,这种结构是很高效的。我做过一个类似的服务程序,同时200个联接,客户端不停的收发数据”折算的话,每秒钟的请求数量是100,这不能算很高的负荷。  我现在做的一个程序,当每秒处理1400次收发通讯并且调用1400次数据库操作,cpu也不过30%-35%,测试数据是在P4普通PC上获得的,数据库在另一台机器上。以我的经验,自己做线程池通常是吃力不讨好的事情。
      

  3.   

    我觉得完全有必要。
    还有反射,
    如果Java的话。