首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

线程中含有阻塞是socket,请教怎么在外部终止线程

2012-02-23 
线程中含有阻塞是socket,请问如何在外部终止线程线程中是阻塞式的socket,我想在外部OnStop()来终止线程应

线程中含有阻塞是socket,请问如何在外部终止线程
线程中是阻塞式的socket,我想在外部OnStop()来终止线程应该如何操作?搜了一些贴没发现具体的,小弟很菜,请大侠给出具体代码,谢谢大家。

DWORD WINAPI ThreadProc(LPVOID param)  
  {  
  while(true)  
  {  
  accept(...);
recv(...);  
  }  
   
  return 0;  
  } 

void CTestDlg::OnStop() 
{
  //请问这里要怎样结束线程?
  closesocket(socket);  
}

[解决办法]
2楼的方法可以,但是线程最好别强杀。。
可以在while置个标识位 while(bflag)
想退出线程时,只需要让bflag=false;
[解决办法]

探讨
lz可以试试直接杀掉线程,TerminateThread(HANDLE);把你创建线程的返回的句柄传递给他

[解决办法]
探讨
楼上的兄弟,请注意while里面是阻塞式的socket啊,while里面可能停在recv(...);现在我想在它阻塞的状况下结束,改如何操作?

[解决办法]
while(TRUE)
{
if(PeekMessage(&msg,0,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg); 
if(msg.message==IDCANCEL) // <---这里退出
break;
}
}
[解决办法]
用select再accept,不要采用永久阻塞模式

热点排行