[C++] Débutant en threads

Débutant en threads [C++] - Programmation

Marsh Posté le 10-06-2001 à 18:14:08    

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();
}

Reply

Marsh Posté le 10-06-2001 à 18:14:08   

Reply

Marsh Posté le 11-06-2001 à 10:41:41    

Help !

Reply

Marsh Posté le 11-06-2001 à 10:50:33    

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 ?

Reply

Marsh Posté le 11-06-2001 à 16:21:31    

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.

Reply

Marsh Posté le 11-06-2001 à 18:56:08    

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();
}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed