我目前正在创建一个服务器类型的应用程序,它将通常监听来自外部客户端的连接,并在它们连接时处理请求等。
目前,每次客户端连接时,我的实现都会创建一对线程。一个线程简单地从套接字读取请求并将它们添加到队列中,第二个线程从队列中读取请求并处理它们。
我基本上是在寻找关于你是否认为拥有所有这些线程是矫枉过正的意见,重要的是这种方法是否会给我带来问题。
需要注意的是,这些线程大部分时间都是空闲的——我在两个线程中都使用了等待句柄(ManualResetEvent)。Reader 线程一直等到消息可用,如果可用,则读取它并将其转储到 Process 线程的队列中。Process 线程一直等待,直到阅读器发出消息在队列中的信号(同样,使用等待句柄)。除非某个特定的客户端真的在敲击服务器,否则这些线程将一直处于等待状态。这很昂贵吗?
我做了一些测试 - 有 1,000 个客户端连接不断唠叨 - 服务器(所以,2,000 多个线程),它似乎处理得很好。