Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1764 connectés 

 


Dernière réponse
Sujet : [C++] Débutant en threads
SoWhatIn22 ben c normal que ca ne fasse pas de boucle: dans ton main, tu lances 2 threads et puis tu sors du programme.... Donc une fois que tu as executé ton main, le programme est fini.
 
Si tu veux que cela fonctionne, il faut que tu attendes que le thread te signale qu'il a détécté une frappe au clavier.  Un exemple tout bete, tres simple, même si vraiment tres crade niveau programmation:
 
 
#include <windows.h>
#include <process.h>
#include <stdio.h>
#include <conio.h>
void press(void*);
void loop(void*);
int stop = 0;
int flag_sync = 0; //
 
void main(void)
{
_beginthread(press,0,NULL);
_beginthread(loop,0,NULL);
 
while(flag_sync == 0) Sleep(10);
}
 
void press(void*)
{
getch();
stop = 1;
}
void loop(void*)
{
  int i = 0;
  while(stop == 0)
  {
    printf("%d\n",i);
    i++;
    Sleep(100);
  }
 
  flag_sync = 1;
  _endthread();
}

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
SoWhatIn22 ben c normal que ca ne fasse pas de boucle: dans ton main, tu lances 2 threads et puis tu sors du programme.... Donc une fois que tu as executé ton main, le programme est fini.
 
Si tu veux que cela fonctionne, il faut que tu attendes que le thread te signale qu'il a détécté une frappe au clavier.  Un exemple tout bete, tres simple, même si vraiment tres crade niveau programmation:
 
 
#include <windows.h>
#include <process.h>
#include <stdio.h>
#include <conio.h>
void press(void*);
void loop(void*);
int stop = 0;
int flag_sync = 0; //
 
void main(void)
{
_beginthread(press,0,NULL);
_beginthread(loop,0,NULL);
 
while(flag_sync == 0) Sleep(10);
}
 
void press(void*)
{
getch();
stop = 1;
}
void loop(void*)
{
  int i = 0;
  while(stop == 0)
  {
    printf("%d\n",i);
    i++;
    Sleep(100);
  }
 
  flag_sync = 1;
  _endthread();
}
antsite Ca compile sans pb, mais à l'éxécution je voulais que ça boucle tant que l'on appuie pas sur une touche mais ça fais rien du tout, même pas une boucle.
Je sais que c facile de faire ça sans les threads, mais je veux les utiliser pour un programme plus tard.
tgrx Ben moi j'ai jamais utilise les threads, et ton code m'a l'air correct... ca compile parfaitement ? Que se passe-t-il a l'execution ?
antsite Help !
antsite J'essaie d'utiliser les threads mais je n'y arrive pas. Voici un petit bout de code qui montre comment je les utilise.
Il y a peut-être d'énormes erreurs car je ne connais pas grand chose avec les threads :-)
 
#include <windows.h>
#include <process.h>
#include <stdio.h>
#include <conio.h>
 
void press(void*);
void loop(void*);
int stop = 0;
 
void main(void)
{
 _beginthread(press,0,NULL);
 _beginthread(loop,0,NULL);
 
}
 
void press(void*)
{
 getch();
 stop = 1;
}
 
void loop(void*)
{
 int i = 0;
 
 while(stop == 0)
 {
  printf("%d\n",i);
  i++;
  Sleep(100);
 }
 _endthread();
}

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)