TerminateThread的缺点

1.TerminateThread是个异步运行函数,执行后不能保证线程马上就结束。

2.TerminateThread在c++里面可能会造成资源泄露,比如

#include <iostream>
#include <windows.h>

using namespace std;

class foo 
{
public:
	foo() { cout << "foo()" << endl; }
	~foo() { cout << "~foo()" << endl; }
};

DWORD WINAPI MyThread(LPVOID)
{
	foo f;
	Sleep(1000);
	return 0;
}

int main()
{
	HANDLE hThread;
	DWORD dwThreadId;

	hThread = CreateThread(NULL, 0, MyThread, NULL, 0, &dwThreadId);
	Sleep(100);
	//TerminateThread(hThread, 0); 增加了这句,程序就不会执行~foo();
	getchar();//等待一下
}

以上代码,如果类foo里面有分配内存等资源,会造成不能执行析构函数,导致资源泄露。


综上所述,良好的程序设计,不应该出现TerminateThread,TerminateProcess等函数。

你可能感兴趣的:(C++,C++,windows,windows,windows,windows,TerminateThread)