TerminateThread函数的作用是在线程外终止一个线程,属于强制终止,线程里面的资源不会被回收,所以使用此函数是很危险的。比如下面的两个例子

demo1:

DWORD __stdcall mythread(void* )
{
    while( true )
    {
        char* p = new char[1024];

delete p;
    }
}

int _tmain(int argc, _TCHAR* argv[])
{

HANDLE h = CreateThread(NULL, 0, mythread, NULL, 0, NULL);

Sleep(1000);

TerminateThread(h, 0);
    h = NULL;

char* p = new char[1024]; //这里会死锁,过不去

delete []p;

return 0;
}

为什么死锁呢?new操作符用的是小块堆,整个进程在分配和回收内存时,都要用同一把锁。如果一个线程在占用该锁时被杀死(即临死前该线程在new或delete操作中),其他线程就无法再使用new或delete了,表现为hang住。

上面的例子是网上的例子。下面的例子是我实际项目中遇到的

demo2:

void CTransmitDlg::OnBnClickedBtnNetOpenClose()
{
// TODO: Add your control notification handler code here
TerminateThread(m_hThread,0);

}

DWORD WINAPI RecThread(LPVOID lpParam)    
{

while(1)
{

ret=recv(sock,(char*)szBuff,sizeof(szBuff),0);

}

}

这段代码在点击断开连接的时候会强制杀掉RecThread线程,此时recv函数可能还没有返回,这个时候再进行创建套接字的时候会死锁在socket函数那里导致程序未响应。

TerminateThread导致程序未响应相关推荐

  1. socket服务器显示未响应,“程序未响应”的思考总结

    在开发聊天程序客户端的过程中,我碰到了一个问题:当运行客户端成后,打开任务管理器,显示程序未相应.我就想是什么原因导致我的程序未响应呢?是我的程序里面有bug? 我上网查了一下,有人说可能程序本身就有 ...

  2. 【Electron-Vue】构建桌面应用(40)- Electron程序未响应

    在使用到Electron-vue开发桌面应用时,出现一个很头疼的问题,就是程序未响应. 具体问题描述:Electron程序调用hide隐藏后,当Electron应用长时间运行后,点击托盘图标调用sho ...

  3. 电脑经常出现程序未响应

    如果您的电脑经常出现程序未响应,这可能是由于多种原因造成的.以下是一些可能的原因和解决方法: 资源不足:如果您的电脑资源不足,比如内存或 CPU 使用率过高,那么程序可能会变得不稳定甚至假死.解决方法 ...

  4. win7系统未响应卡住_win7旗舰版程序未响应

    2017-08-10 15:12:04 电脑程序未响应导致程序无法正常打开,遇上这种情况要怎么办?win7旗舰版系统如何加快程序响应?想要解决未响应的故障,大家可以参考以下教程来设置. 2017-01 ...

  5. 联盟不显示聊天服务器未响应,玩英雄联盟出现程序未响应是怎么回事

    英雄联盟的玩家许多,同时出现的问题也是大不相同,此次小编带给大家的是关于,玩英雄联盟经常出现程序未响应的相关解决方案,一起来看看吧! 玩英雄联盟经常出现程序未响应的解决方法: 1.首先检查网络,看看是 ...

  6. lol怎么英雄怎么聊天服务器未响应,玩英雄联盟出现程序未响应是怎么回事

    英雄联盟的玩家许多,同时出现的问题也是大不相同,此次小编带给大家的是关于,玩英雄联盟经常出现程序未响应的相关解决方案,一起来看看吧! 玩英雄联盟经常出现程序未响应的解决方法: 1.首先检查网络,看看是 ...

  7. win7系统未响应卡住_win7程序未响应经常死机原因及处理方法

    在使用win7系统的同时,也有很多用户提出了不同的系统问题,win7程序未响应经常死机也是其中的困扰之一吧,出现这种情况虽然有点麻烦,但是还是可以解决的,下面就由学习啦小编跟大家分享一下解决方法吧,希 ...

  8. MFC检测程序未响应

    MFC检测程序未响应 | 火苗999℃的博客 UpdateData();CWnd* hwnd = FindWindow(NULL, m_szName);// m_szName 程序名称if (NULL ...

  9. 计算机老出现无法响应,win7电脑经常出现“程序未响应”的提示怎么办?

    有些朋友在上班的时候,或者是在日常操作电脑的时候,都习惯在电脑中开启很多的网页或者是开启很多的程序,经常都需要来来回回的切换网页或者是程序,可能切换几次的情况下还不会出现什么问题,但是若是切换的次数多 ...

最新文章

  1. 递归删除单链表中所有值为x的元素_如何纯递归反转链表的一部分
  2. AC自动机模板(摘自刘汝佳紫书,无指针)
  3. 微软HTTP API指南
  4. 洛谷P4219 大融合(LCT、虚子树)
  5. llvm编译linux,在Linux上编译LLVM/Clang 8.0.0等全部源代码
  6. 交换两个数组 差最小 java_如何交换两个等长整形数组使其数组和的差最小(C和java实现)...
  7. 统计学习方法-李航(4)
  8. 4.2WebHost配置「深入浅出ASP.NET Core系列」
  9. omnigraffle 画曲线_「技法」三步学会用绘图利器 OmniGraffle 绘制流程图
  10. 网络分裂(network partition)
  11. React-Native 在 mac 下 build 问题
  12. 开源视频处理工具Shotcut的用法: 剪切、合并、增加背景音乐、添加字幕、 插入视频、图片转视频并加背景音乐、制作电子相册
  13. 为什么非零实对称矩阵一定是正定矩阵
  14. Windows下利用Python自动切换IP/DNS
  15. 易接SDK ios9以上无法弹出充值界面的一种情况
  16. 【Windows】Win10强制删除文件夹
  17. Java爬取喜马拉雅非付费音频【优化】
  18. Word 公式排版(使用制表符)
  19. Ubuntu安装拼音输入法
  20. 中断使能和清除使能、中断挂起和清除挂起

热门文章

  1. html 文字折叠行 展开,CSS 实现多行文本“展开收起”
  2. c# imager让图片有圆角unity_使用Unity着色器实现精灵(Sprite)涂鸦效果
  3. word 制表位之mythtype公式编号右对齐
  4. html 自适应模板 (webview)
  5. from sknn.mlp import Regressor,Layer 报错
  6. 工作之旅_C#篇(第一天)
  7. NNDL 作业6:基于CNN的XO识别
  8. Geohash之范围搜索
  9. 30天敏捷结果(8):清空大脑,释放压力
  10. 麻省理工时域差分软件 MEEP windows 下编译开发(二)——开始编译