TerminateThread强烈不建议使用,因为这个函数的执行是异步的,

你无法保证调用之后会立即退出,同时线程的堆栈均不会被销毁,

导致内存泄露。如果调用了这个函数,请确保使用WaitForSingleObject来等待线程对象的结束。

ThreadHandle = CreateThread(NULL,0,.....);

CloseHandel(ThreadHandle );//不会直接关闭线程,只是递减线程中的内核对象使用计数。当使用计数为0时,释放内核对象

一、Createthread:创建线程后如何回收

1.线程的生命周期就是线程函数从开始执行到return,这时候线程就自动回收了

 

2.而线程句柄是一个内核对象。我们可以通过句柄来操作线程,句柄生命周期是从CreateThread返回到你CloseHandle(),closehandle后便释放句柄(如果不closehandle句柄资源很快用光)

 

3.关闭一个句柄对象,表示不再使用该句柄操作线程(即不对线程做任何干预),但不会释放线程论文网,线程释放按上述1其生命周期完成。

4.句柄操作线程例子,如WaitForSingleObject(ThreadHandle,1000)为等待线程1s的操作,假设判断10s后为线程超时的情况,不必调用TerminateThread杀线程,等其线程生命周期结束return即可

 

二、调用TerminateThread杀线程的致命问题:

 

TerminateThread终止线程后,堆栈没有被回收(注意连栈都没有被回收)

 

整个进程在分配和回收内存时,占用同一把锁,如果一个线程在使用该锁时被杀死(即临死前该线程在new或delete操作中),则其他线程就无法再使用new或delete了,表现为hang住

上一篇:配对交易python策略源代码
下一篇:TerminateThread()CloseHandle()ExitThread()的区别

小学阶段智力障碍儿童的...

系统开发方法

低值易耗品摊销方法

幼儿自我保护认知和方法...

论投资决策分析方法【2800字】

精细化预算管理方法茬电...

浅谈财务报表分析的内容及方法【1982字】

上海应复中心办公楼施工投标文件

风险管理茬呼吸内科护理...

由造纸黑液制备碳酸钙过程研究

一般自我效能感量表(GSES)

双子座近期桃花运,双子...

检察机關司法會计工作的科學发展【3160字】

论新农村建设中农村基础设施的完善

高光谱数据稀疏约束分类识别技术研究

关于白酒的调查问卷表

水下纯方位系统目标跟踪算法研究