[déplacé Bar -> CPP] thread en c

Résolu
dyroj Messages postés 123 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 18 juin 2012 - 18 janv. 2009 à 17:57
Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 19 janv. 2009 à 18:49
bonjour ,
qui peut me faire un tout petit exemple d'utilisation des thread pour demarer dans le domain.
meme sous dos.
merci a plus.

5 réponses

Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
19 janv. 2009 à 10:24
Salut

Voila un petit exemple de code:

DWORD WINAPI MA_FONCTION(LPVOID lParam)
{
    //traitement dans ton thread

}

int main()
{
   HANDLE hTread[4];
   for(int i=0;i<4;i++)
   {
        hTread[i]=CreateThread(NULL,0,MA_FONCTION,0,0);
        if(hTread[i]==0){
             MessageBox(NULL,"Erreur",NULL,MB_OK|MB_ICONWARNING);
             return 0;
         }
     }
     //On attend la fin des 4 threads
     WaitForMultipleObjects(4,hTread,TRUE,INFINITE);

     //fermeture des threads
     for(i=0;i<4;i++)
         CloseHandle(hTread[i]);
}

A+

____________________________________________________________________________
Mon site internet :  http://ImAnalyse.free.fr
http://ImAnalyse.free.fr
3
Pistol_Pete Messages postés 1054 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
19 janv. 2009 à 18:49
Salut
Oui effectivement, j'ai oublié un paramètre pour la fonction createthread.

Dans cet petit exemple, tout les thread exécute la même fonction mais ca c'est toi qui voit.
Tu peux faire quelque chose comme ca:
hTread[i]=CreateThread(NULL,0,MA_FONCTION_1,0,0,&threadID);
hTread[i]=CreateThread(NULL,0,MA_FONCTION_2,0,0,&threadID);
hTread[i]=CreateThread(NULL,0,MA_FONCTION_3,0,0,&threadID);
hTread[i]=CreateThread(NULL,0,MA_FONCTION_4,0,0,&threadID);

La chaque thread exécuterons une fonction différente.
A+
____________________________________________________________________________
Mon site internet :  http://ImAnalyse.free.fr
http://ImAnalyse.free.fr
3
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
19 janv. 2009 à 14:24
Merci, ça en aide plus d'un

Cordialement, uaip.
0
dyroj Messages postés 123 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 18 juin 2012
19 janv. 2009 à 15:04
salut,
meci beaucoup pistol_pete mais ya un problem avec hTread[i]=CreateThread(NULL,0,MA_FONCTION,0,0);
je suis sous dev et le compilateur me dit "too few arguments to function `CreateThread' "
++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dyroj Messages postés 123 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 18 juin 2012
19 janv. 2009 à 15:28
enfaite tu a juste oublier un argument,
:

DWORD WINAPI MA_FONCTION(LPVOID lParam)
{
    //
 }




int main()
{
    int i;
    DWORD threadID;
   HANDLE hTread[4];
   for(i=0;i<4;i++)
   {
        hTread[i]=CreateThread(NULL,0,MA_FONCTION,0,0,&threadID);
        if(hTread[i]==0){
             MessageBox(NULL,"Erreur",NULL,MB_OK|MB_ICONWARNING);
             return 0;
         }
     }
     //On attend la fin des 4 threads
     WaitForMultipleObjects(4,hTread,TRUE,INFINITE);


     //fermeture des threads
     for(i=0;i<4;i++)
         CloseHandle(hTread[i]);
}

je ne compren pas un truc se que j'ai lu sur les thread c'est qu'on paut executer plusieur tache en meme temp alors que la je ne voit pas comment faire.
++
0
Rejoignez-nous