RT主线程:
WAIT_FAILED==WaitForSingleObject(m_hThreadAccept[i], INFINITE) )
在m_hThreadAccept对应的线程中也在做一样的事情
WaitForSingleObject(m_hEvent, INFINITE);结果再主线程中, 即使先_endthreadex,也没反映~。这种情况下怎么让线程返回?虽然无关大碍,还是想问问。。
我想的解决方法:
时间不用INFINITE,这样会影响到其他东西,不用
主线程中进行一个能触发m_hEvent的操作。对于主线程说,完全不知道m_hEvent存在。。

解决方案 »

  1.   

    你不会是死锁了吧,主线程里最好不要做WaitForSingleObject(..., INFINITE)的操作子线程先退出,最后主线程再退出
      

  2.   


    子线程做的工作是accept,触发的条自然是一个连接的到来;
    但也就是说,在连接没到来的时候可以看成是一个死锁,但是这个时候程序结束的话,即使手动_endthreadex子线程也没反映。我的问题就是能不能在这个情况下,如果我想关闭也能让子线程返回?然后主线程正确读到子线程返回
      

  3.   

    退出之前发送消息让子线程结束
    主线程WaitForSingleObject(..., xxxx) 等待结束并且子线程内部此时要能接收到并处理消息,不要给屏蔽了
      

  4.   

    通过 shutdown 和 closesocket 关闭监听子线程
      

  5.   

    回楼上
    这些问题我都想过
    问题是,主,子线程完全是不搭嘎的,不强制性对它们之间做了什么进行耦合。我只想从系统API程度上关闭即可。
      

  6.   

    这样设计有点怪.不过你的要求可以实现,加一个exit的event.用WaitForMultipleObjects.