visual stdio 2008 进程可能已死锁(或未运行任何用户模式代码)。所有线程已被停止。

xhlu 2019-12-25 08:34:01
我的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()那句就会卡住,点中断,提示上面的提示“进程可能已死锁(或未运行任何用户模式代码)。所有线程已被停止。”
...全文
255 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshi_hujunjun 2020-04-09
  • 打赏
  • 举报
回复
你还没有搞明白socket连接的顺序,先看看书,再写代码.
sevancheng 2019-12-27
  • 打赏
  • 举报
回复
阻塞模式 accept函数是阻塞的,阻塞了消息循环,要开线程去接收
zgl7903 2019-12-27
  • 打赏
  • 举报
回复
孤客天涯 2019-12-25
  • 打赏
  • 举报
回复
你要放到线程中去,侦听是一个阻塞过程,在主程序中把主程序阻死了
走好每一步 2019-12-25
  • 打赏
  • 举报
回复
accept不能放在主界面线程里,要另外开一个线程

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧