如果按照先监听发现有连接再分配线程的话对于有几万个连接来说会出现一个问题那就是
会分配几万个线程,但事实上有些线程执行完之后还是没有被释放掉,而同时又产生新的线程这样不是很浪费吗?
 但是如果说循环检测的话,他可以把一些执行完的线程重新分配给新的连接,这样看似麻烦,但是和前者相比,占用更少的资源,你说呢?
  因此两者相比用循环检测比较好点,不过相信还有更好的方法,只是现在还没找到吧呵呵,大家可以想想有什么更好的方法!!                                                     wish u good luck
                                                       Greatsft

解决方案 »

  1.   

    不过现在我有个想法:就是可以采用多端口轮流监听,就是说比如采用1234,1235,1236等端口,
    (当然不需要太多端口,三四个就够了吧),他们执行相同的操作,一旦,服务器负责循环检测这些端口,就相当于把原来一个端口的流量现在分给几个端口承担.
       当然如果要更好的话,最好在客户端写个优化分配算法,就是检测实际发送至哪个端口比较有效率,(这个楼主可以自己想想呵呵)    当然多端口的话也会给机器增加负担,但是对客户来说效率会提高很多!                                               wish u good luck
                                                        Greatsft
      

  2.   

    to: greatsft(C的使者)"会分配几万个线程,但事实上有些线程执行完之后还是没有被释放掉"我有点不明白,可能设想的模型不太一样。如果是客户端连接以后只是为了发送少量的数据,发送完以后关闭连接,你说的应该是更好的。
    但是,如果在一些时时连接系统中,客户端需要和服务器端一直保存连接这样也可以吗?我有点转不过来弯。
      

  3.   

    to jcaomao(草帽)
      的确会出现象你说的那种情况,所以我说了会有一个检测机制,如果是时时系统的话,连接是一直存在的,那这样循环检测的结果其实就会和你的提出的那种设想一致,但是,你并不能保证说每个客户端一直是占着这个线程的,他们其中一些结束会话后,如果系统不循环检测的话,这些线程资源就浪费了,同时系统又分配新会话新的线程资源,这样的结果就是空闲的线程没利用,有重新生成了新的线程资源,对于几万个连接的话,这个资源浪费是可以想象的,你说呢?                                              wish u good luck 
                                                      Greatsft