Salut, Worker Thread sous console win32
inclus les headers <process.h> 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 ...!
|