IOCP模型中如何结束线程并清理资源。

疯魔症 2011-09-13 05:46:06
如题。
我的程序最终做成一个windows系统服务程序,停止消息时主线程接收到WM_QUIT消息,我想在这里结束各个线程,清理相关资源,提供个思路吧。
...全文
69 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯魔症 2011-11-01
  • 打赏
  • 举报
回复
崩掉。。。
疯魔症 2011-09-14
  • 打赏
  • 举报
回复
thanks
[Quote=引用 5 楼 shenyi0106 的回复:]

while(g_bRun) //用一个全局变量来控制
{ // 等待接受未决的连接请求
SOCKADDR_IN saRemote;
int nRemoteLen = sizeof(saRemote);

SOCKET sNew = ::accept(sListen, (sockaddr*)&saRemote, &nRemoteLen)……
[/Quote]
shenyi0106 2011-09-14
  • 打赏
  • 举报
回复
while(g_bRun) //用一个全局变量来控制
{ // 等待接受未决的连接请求
SOCKADDR_IN saRemote;
int nRemoteLen = sizeof(saRemote);

SOCKET sNew = ::accept(sListen, (sockaddr*)&saRemote, &nRemoteLen);
}

关闭时,调用closesocket关闭sListen时,accept会返回,使之重新进入while循环,判断条件,然后就自动结束了
疯魔症 2011-09-14
  • 打赏
  • 举报
回复
我的IOCP主线程,用的这样的,应该如何结束。
while(TRUE)
{ // 等待接受未决的连接请求
SOCKADDR_IN saRemote;
int nRemoteLen = sizeof(saRemote);

SOCKET sNew = ::accept(sListen, (sockaddr*)&saRemote, &nRemoteLen);
}
mynamelj 2011-09-13
  • 打赏
  • 举报
回复
其它的线程可以通过SetEvent来结束,给线程发出事件让它来关闭
疯魔症 2011-09-13
  • 打赏
  • 举报
回复
IOCP主线程如何结束呢.
mynamelj 2011-09-13
  • 打赏
  • 举报
回复
要通知线程结束可以使用PostQueuedCompletionStatus,dwCompletionKey传NULL参数
线程中调用GetQueuedCompletionStatus,若lpCompletionKey参数为NULL那就直接return来结束线程

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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