WSASelect()多线程运行一段时间不响应消息机制

时间:2021-02-02 17:09:53
多线程中用WSASelect模型运行几个小时后,不响应消息机制。开了4个线程(每个线程的结构跟下面的代码类似),4个线程共用一个临界区想实现线程并发。
LPRESULT CdlhDlg::Thread1(){
        EnterCriticalSection(&(pThis->g_cs));
        ~~~~~~~~~~~~~~~~
        ~~~~~~~~~~~~~~~
        WSAAsyncSelect(sock,pThis->GetSafeHwnd(),WM_RECVDATA2,FD_WRITE|FD_CLOSE|FD_READ|FD_CONNECT);
       ///////////////////////////////////////////////////运行一段时间后(pThis指主窗体的指针),WM_RECVDATA2消息对应的函数不响应了///////////////
        WSASendTo(sock,&wsabuf,1,&wsasend,0,(SOCKADDR *)(&(pThis->RootItemInfoArr[2].addrSvr)), sizeof(SOCKADDR),
                                NU LL,NULL);
Sleep(10);
        LeaveCriticalSection(&pThis->g_cs);
}
不知道各位朋友有没有遇到这种情况。希望不吝赐教,谢谢~~

3 个解决方案

#1


没人吗,顶一下

#2


断点看看sock,pThis有变化吗?

WM_RECVDATA2消息对应的函数实现代码怎么样的?

#3


结贴~~~问题解决。原来是通讯协议的 问题~·

#1


没人吗,顶一下

#2


断点看看sock,pThis有变化吗?

WM_RECVDATA2消息对应的函数实现代码怎么样的?

#3


结贴~~~问题解决。原来是通讯协议的 问题~·