Falsch.
Code:
#include <windows.h>
#include <iostream>
using namespace std;
DWORD WINAPI banane(LPVOID); //definiert den Thread
int main()
{
HANDLE hThread;
DWORD dwThreadID, dwExitCode;
hThread = CreateThread(NULL,0,banane,0,0,&dwThreadID);
CloseHandle(hThread);
cout << "CloseHandle(hThread)" << endl;
Sleep(5000);
GetExitCodeThread(hThread, &dwExitCode);
if(GetLastError() != ERROR_INVALID_HANDLE)
cout << "Well, that was unexpected" << endl;
cout << " Exit code " << dwExitCode << endl;
}
DWORD WINAPI banane(LPVOID data) //gibt dem Thread eine Funktion.
{
while(1)
{
cout << "Das kommt aus dem Thread!" << endl;
Sleep(100);
}
};
In diesem Bild sieht man das der Thread noch weiterläuft. (Außerdem sieht man direkt eine Gefahr des Multithreadings. Da die beiden couts "gleichzeitig" ablaufen wird der Text gemixt ausgegeben.)
CloseHandle() bewirkt nur dass man mit diesem Handle (Handle wie der Halter an der Tasse) nichts mehr anfangen kann. Wenn danach etwas mit diesem Handle gemacht werden soll (GetExitCodeThread()) merkt diese Funktion dass dieses Handle ungültig ist und bricht ab.