我的做法是开20个线程,然后挂起,只到有客户的请求。如果有20个人同时来联接,就每人一个线程,如果来了40个,就每线程两个,有先后。如果每个线程处理为20个,则这个服务器的处理能力就有400个在线,并发处理能力为20同时。如果每个的处理时间为2秒,这种结构是很高效的。
我做过一个类似的服务程序,同时200个联接,客户端不停的收发数据。CPU的利用为30%.(只有数据收发操作,没有其他的操作)。处理完一个请求,然后继续挂起,不占用CPU时间。
我做过一个类似的服务程序,同时200个联接,客户端不停的收发数据。CPU的利用为30%.(只有数据收发操作,没有其他的操作)。处理完一个请求,然后继续挂起,不占用CPU时间。
如果对性能要求很苛刻,用IOCP,它已经实现了线程池的管理。因此,无论如何,通讯server总是不需要你来实现线程池的。
还有反射,
如果Java的话。