关于子线程被强制退出后的内存释放问题
示例如下:
void ThreadFunc ( void *PVOID )
{
....;
G(参数); //常规函数调用,是某工具库函数,内部代码不可见。此函数运行过程中消耗内存。
....;
_endthread();
}
void ThreadMemory ( void *PVOID)//此线程用于监视内存使用是否超阈值,比如>85%时,全局变量
memover=1
{
....;
_endthread();
}
int A()
{
HANDLE hMemory = _beginthread(ThreadMemory,0,NULL);
HANDLE hFunc = _beginthread(ThreadFunc,0,NULL);
while (1)
{
Sleep(10);
if ( memoryover )
{
if (hFunc)
{
while ( !TerminateThread(hFunc, 0) );
while ( !CloseHandle(hFunc) );
hFunc= NULL;
}
return 2;
}
}
}
main()
{
for 循环
{
A();
if A正常返回
{...;}
if A由于内存超额返回2
{......;}
}
}
/////////////////
现在问题就是,当第一次因为内存超出阈值强制终止线程ThreadFunc后,此线程消耗的内存资源并没有释放,从而会导致后续A函数的调用总是出现内存超阈值的情况。
由于ThreadFunc中使用的G函数是调用的外部工具库函数,所以在程序中不能使用delete释放内存。
这种情况下该怎么处理,使得第一次内存超阈值后,再次调用A时不会出现内存超阈值现象。
请帮忙给些建议,谢谢!