速度比使用事件快吗?还是稳定?还是其他方面的原因?

解决方案 »

  1.   

    使用Select一般与多线程一起使用
    效率当然比时间快呀,也稳定
      

  2.   

    Winsock提供了五种套接字I/O模型来解决这些问题.他们分别是
    Select(选择),WSAAsyncSelect(异步选择),
    WSAEventSelect (事件选择), overlapped(重叠) , completion 
    port(完成端口) .CAsynSocket内部使用的是WSAAsyncSelect模型。
    使用Select模型效率要高一些,但比较复杂。
    使用CAsynSocket编程要简单很多,CAsynSocket对socket函数都做了封装,更重要的是你的程序不用考虑多线程。
      

  3.   

    不是吧,以我的经验看来,CAsyncSocket也是基于消息循环的,向当与同步了.你要阻塞随便那个事件,比如OnAccept,该CAsyncSocket的宿主UI线程就阻塞了..
    在使用的时候,对于每个新的连接,触发OnReceive事件之后都是在线程池里面去Receive的.但是并发测试的时候,还是有Connect失败...把Listen开大就有所改进..奇怪了,listen的个数因该不会影响效率吧..一般是5个啊.
      

  4.   

    很难说线程会比消息快的.
    不过本质上我认为本质上SOCKET用消息或者线程没有太大区别.
    何况如果你想用线程的话直接用SOCKET得了,就可以不用CAsynSocket
      

  5.   

    我比较喜欢用select,因为移植方便。你可以用循环select(设置很小的时间间隔),根据SELECT的结果发布WINDOWS消息,另外一个进程处理WINDOWS消息,这样完全实现了CAsyncSocket类似的功能。