CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

如何结束阻塞状态的线程?

楼主sboom(+-LingCh-+)(爱美人不爱VC)2005-02-06 01:19:33 在 VC/MFC / 进程/线程/DLL 提问

要完整的释放资源,因为线程控制了数据库连接,SOCKET和其他一些要释放的资源. 问题点数:50、回复次数:10Top

1 楼wagzt724(蓝天)回复于 2005-02-06 09:14:46 得分 0

给个思路吧,必须用另外的一个“第三者”来终止阻塞线程,但涉及到系统权限。Top

2 楼tabris17(四不象)回复于 2005-02-06 09:19:20 得分 35

把该线程使用的资源情况添到一个列表中  
   
  第三者将根据这个列表来释放资源  
   
  typedef   struct   _HANDLE_LIST{  
      DWORD   dwHandleType;  
      HANDLE   handle;  
  }HandleList;  
   
  HandleList[100];Top

3 楼sboom(+-LingCh-+)(爱美人不爱VC)回复于 2005-02-06 11:05:46 得分 0

像SOCKET这样的资源,由于线程阻塞式地调用了recv,能够把这个SOCKET释放吗?Top

4 楼BigFanOfCpp(((Bytes)+_ALGIN-1) & ~(_ALGIN-1))回复于 2005-02-06 21:34:21 得分 5

HANDLE   m_hEvent   =   ::CreateEvent(NULL,TRUE,FALSE,"");  
    ::ResetEvent(m_hEvent);  
   
  线程函数里:  
   
  for   (;;)  
  {  
   
              if   (WAIT_OBJECT_0   ==   ::WaitForSingleObject(m_hEvent,10000))  
              {  
                      ::CloseHandle(m_hEvent);  
                      return   1;  
              }  
  }  
  Top

5 楼sboom(+-LingCh-+)(爱美人不爱VC)回复于 2005-02-06 21:49:19 得分 0

不是这么回事,是我的线程会因为SOCKET的操作阻塞.我要结束这个线程.Top

6 楼najzni(najzni)回复于 2005-02-06 22:28:59 得分 0

学习Top

7 楼BigFanOfCpp(((Bytes)+_ALGIN-1) & ~(_ALGIN-1))回复于 2005-02-07 00:40:03 得分 0

想要线程安全结束,只有让线程自己return   1;对吧?  
  所以需要让线程等待外面的某个核心对象,然后自己return   1;  
  我刚刚写的那段程序就是这个意思,你可以借鉴一下,因为原理都是一样的.Top

8 楼tabris17(四不象)回复于 2005-02-07 20:20:18 得分 10

to   BigFanOfCpp(vc程序员):  
   
  你还是没懂楼主的意思,线程已经阻塞了,如何再去调用WaitForSingleObject来等待事件?  
   
   
   
   
   
   
   
   
  >像SOCKET这样的资源,由于线程阻塞式地调用了recv,能够把这个SOCKET释放吗?  
   
  应该可以,不过没试过,不是很肯定Top

9 楼tabris17(四不象)回复于 2005-02-07 20:21:21 得分 0

如果关闭socket,阻塞的recv应该会立即返回失败Top

10 楼XueBoy163(菜刀之恋)回复于 2005-02-07 21:40:16 得分 0

recv可以阻塞有时间设定的吧?Top

相关问题

  • 请问如何让线程退出socket阻塞状态
  • 如何通过线程句柄,获取该线程的状态(阻塞,挂起等)?
  • 多线程导致fopen()调用阻塞???
  • 线程进入阻塞时,线程会不会让出CPU?
  • 从线程外部结束线程
  • 父线程怎样结束子线程?
  • 高分~~~~~~~~!!!!!!关于Socket中的阻塞和非阻塞,线程的问题。
  • 如何在线程中弹出对话框而不阻塞线程?
  • 关于线程的结束!
  • 如何结束线程?

关键词

  • 线程
  • socket
  • 阻塞
  • 调用
  • 释放
  • hevent
  • 资源
  • 结束
  • recv
  • handle

得分解答快速导航

  • 帖主:sboom
  • tabris17
  • BigFanOfCpp
  • tabris17

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo