nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 16 janv. 2008 à 22:42
Salut, Worker Thread sous console win32
inclus les headers et <windows.h>
crees 3 variables:
HANDLE processus; // handle sur le processus
bool shouldStop;// variable de condition de boucle du thread
static const unsigned THREAD_TIME_WAIT = 5000;//temps accorde au thread pour finir de s'executer
ensuite definis une fonction globale (ou static dans une classe) comme suit:
unsigned __stdcall threadProcedure(LPVOID argument)
{
unsigned i=0;
while(!shouldStop)
{
Sleep(1000);
cout<<"Execution du thread depuis "<<++i<<" secondes"<<endl;
}
return 0;
}
pour lancer le thread tu fais simplement:
UINT id;
shouldStop = false;
processus = (HANDLE)_beginthreadex(NULL, 0, &threadProcedure,NULL, 0, &ID );
remarque que le dernier argument NULL est en fait le LPVOID argument que tu peux passer a la fonction threadProcedure, un pointeur sur un objet (dans le cas d'une classe une structure contenant une variable recensant le pointeur courant , ou le pointeur courant lui-meme)
pour le mettre en pause:
::SuspendThread(processus);
pour le demarrer apres une pause:
::ResumeThread(processus);
pour l'arreter:
shouldStop = true;
WaitForSingleObject(processus,THREAD_TIME_WAIT);
CloseHandle(processus);
J'espere avoir aide, salut
je suis heureux de faire partie d'une grande famille ...!