我的mfc程式運行很久都沒反應,點擊“全部中斷”后,彈出“行程可能已死鎖(或未運行任何用戶模式代碼)。所有執行緒已被停止。”請問一下各位大神這個是什么原因?
int nRow=m_listMessage.GetItemCount();
m_listMessage.InsertItem(nRow,_T("點擊“開始”按鈕!")); //插入行
nRow = m_listMessage.GetItemCount();
if (nRow > 0)
m_listMessage.EnsureVisible(nRow-1, FALSE);
sockaddr_in remoteAddr;
int nAddrlen = sizeof(remoteAddr);
while (1) {
SOCKET *ClientSocket = new SOCKET;
ClientSocket = (SOCKET*)malloc(sizeof(SOCKET));
*ClientSocket = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen);//0, 0);
CreateThread(NULL, 0, &ServerThread, ClientSocket, 0, NULL);
}//while
closesocket(slisten);
WSACleanup();
return;//(0);
單步執行到accept()那句就會卡住,點中斷,提示上面的提示“行程可能已死鎖(或未運行任何用戶模式代碼)。所有執行緒已被停止。”
uj5u.com熱心網友回復:
accept不能放在主界面執行緒里,要另外開一個執行緒uj5u.com熱心網友回復:
你要放到執行緒中去,偵聽是一個阻塞程序,在主程式中把主程式阻死了uj5u.com熱心網友回復:
阻塞模式 accept函式是阻塞的,阻塞了訊息回圈,要開執行緒去接收uj5u.com熱心網友回復:
非阻塞connect()和accept()uj5u.com熱心網友回復:
你還沒有搞明白socket連接的順序,先看看書,再寫代碼.轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/18548.html
標籤:進程/線程/DLL
下一篇:資料平滑處理,擬合過渡圓弧
