Thread dans une aplication console win32

cs_li Messages postés 54 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 6 juin 2011 - 16 janv. 2008 à 02:37
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 - 16 janv. 2008 à 22:42
Bon voila je souhaite créé des thread avec une aplication console  win32

mais je ne sais pas dutout coment faire ... merci de vos conseil
A voir également:

2 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
16 janv. 2008 à 02:46
CreateThread

CloseHandle

C++ (@++)<!--
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
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 ...!
0
Rejoignez-nous