各位高手:
    监听套接字上关联一个event并用WSAEventSelect挂上FD_ACCEPT后,客户端连接时该event就会被传信,监听线程里WaitForSingleObject处理传信事件(也就是调用接受连接)。现在问题是,假如并发进来100个连接,那我何时知道我已经全部调用过accept,这时我可以ResetEvent,因为我发现监听线程里不能随便ResetEvent,这样极有可能导致有的连接得不到接受从而降低了连接的成功率。我应该如何处理这个问题呢?或者哪位有更潇洒的解决办法也说来听听。

解决方案 »

  1.   

    使用信号量,初试化为0,以后来一个连接release一下,使得信号量加一,
    监听线程就每次require这个信号量,require成功一次就会使得信号量减一。
    这样只要信号量大于0,监听线程总会运行,一直到信号量等于○。
      

  2.   

    to ilovevc(linux_newbie) 
       假设我现在事件是类似winsock网络事件由系统触发,这个信号量如何实现呢?
      

  3.   

    to gagamazel(猪十年) :
       这么早就起床了,哈哈,谢谢
      

  4.   

    呵呵,就是用完成端口,注册FD_Accept事件只不过是为了更合理的投递acceptex以便更快的接受连接
      

  5.   

    来人,把XXX绑出去,砍了!
    饶命啊,不是我的错,csdn上没有人理我。。
    也罢,先寄下你项上人头
    救命啊