如题。
我的程序最终做成一个windows系统服务程序,停止消息时主线程接收到WM_QUIT消息,我想在这里结束各个线程,清理相关资源,提供个思路吧。

解决方案 »

  1.   

    要通知线程结束可以使用PostQueuedCompletionStatus,dwCompletionKey传NULL参数
    线程中调用GetQueuedCompletionStatus,若lpCompletionKey参数为NULL那就直接return来结束线程
      

  2.   

    其它的线程可以通过SetEvent来结束,给线程发出事件让它来关闭
      

  3.   

    我的IOCP主线程,用的这样的,应该如何结束。
    while(TRUE)    
    {        // 等待接受未决的连接请求        
        SOCKADDR_IN saRemote;        
       int nRemoteLen = sizeof(saRemote);      SOCKET sNew = ::accept(sListen, (sockaddr*)&saRemote, &nRemoteLen);        
    }
      

  4.   

    while(g_bRun)  //用一个全局变量来控制  
    { // 等待接受未决的连接请求   
      SOCKADDR_IN saRemote;   
      int nRemoteLen = sizeof(saRemote);     SOCKET sNew = ::accept(sListen, (sockaddr*)&saRemote, &nRemoteLen);   
    }关闭时,调用closesocket关闭sListen时,accept会返回,使之重新进入while循环,判断条件,然后就自动结束了