createthread()
の後にスレッドを閉じてメモリを解放したいと考えています。私は返信createthread()
のコールバックとclosehandle()
でこれを行いました。いくつかの人々は、これはメモリを解放することはできません明らかにした。私はそれをテストしています、これまではとても良いです。それは大丈夫ですか?createthread()はどのようにメモリを解放するのですか?
私はフラグを取る:これを行うためにendThread、あまりにも多くのフラグがある場合は、醜く見える、それをより良くする方法?
typedef void(*pfunc)(char*);
HANDLE H_thread=NULL;
int endThread = 0;//0:thread not start;1:end thread order;2:thread started
void mycall(char*s){
cout << "callback" << endl;
cout << s << endl;
}
static DWORD WINAPI myfunc(LPVOID lp)
{
while (1)
{
((pfunc)lp)("2222");
cout << "thread..........." << endl;
Sleep(10);
if (1==endThread)
{
endThread = 0;
return 0;
}
}
}
void thread_callback(pfunc call){
if (0==endThread)
{
H_thread = CreateThread(NULL, 0, myfunc, call, 0, NULL);
endThread = 2;
call("1111");
}
}
int _tmain(int argc, _TCHAR* argv[])
{
while (true)
{
thread_callback(mycall);
endThread = 1;
//wait for thread end.
while (endThread != 0){
Sleep(1);
}
CloseHandle(H_thread);
H_thread = NULL;
}
while(1);
return 0;
}
あなたはどのメモリを解放しようとしていますか?私はグローバル変数 'endThread'を間違って使っていますが、解放する必要のあるメモリ割り当てはありません。 –
[コードレビュー](http://codereview.stackexchange.com/)を求めているようですね。 – Alisson
私はendThread @ Alissonを置き換えるものを手に入れたい。endThread @ Harry Johnston – asdf