Ad esempio:
Codice:
DWORD WINAPI ProvaThread(LPVOID pExitCheck)
{
bool &exitCheck = (bool)*pExitCheck;
for(......)
{
if(exitCheck)
break;
}
return 0;
}
Per creare il worker thread:
bool exitCheck = false;
HANDLE hThread = CreateThread(NULL, 0, ProvaThread, &exitCheck, 0, NULL);
Puoi semplicmente interromepere l'esecuzione del thread settando exitCheck a true...
Se vuoi che ProvaThread faccia parte di una classe deve essere dichiarato come static... In tal caso ti conviene passare al posto di exitCheck un puntatore a this (visto che è static altrimenti può accedere a soli membri static) e con quello accedere a tutta la classe...
Tanto per farti un esempio:
Codice:
DWORD WINAPI MiaClasse::ProvaThread(LPVOID pMiaClasse)
{
MiaClasse &miaClasse = (MiaClasse)*pMiaClasse;
miaClasse.eseguiCiclo();
return 0;
}