problème avec les threads

problème avec les threads - Perl - Programmation

Marsh Posté le 18-06-2004 à 16:19:29    

Salut tout le monde, j ai un petit prob.
Deja dans un premier temps je voulais utiliser fork(), mais étant limité a 64 processus, ca n'était pas suffisant.
Donc j essaie d utiliser les threads, et je me suis fait un petit prog, qui devrai m afficher tous les chiffres entre 0 et 10:
 
use Threads;
 
sub affiche
{
 local($i)=@_;
 print"I=$i\n";
 exit;
}
 
$i=0;
while($i<10)
{
 local($thr[$i]) = "threads"->new(\&affiche,$i);
 $thr[$i]->detach;
 $i++;
}
 
 
Mais ca n affiche ke O. Je comprend pa! Qqn peut m expliquer.
Merci

Reply

Marsh Posté le 18-06-2004 à 16:19:29   

Reply

Marsh Posté le 19-06-2004 à 16:29:56    

je pourrais surement t'aider lundi, j'ai un morceau de code au boulot qui utilise des threads mais jme rappel plus par coeur ce que j'avais fait.


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 19-06-2004 à 17:31:35    

ok merci

Reply

Marsh Posté le 21-06-2004 à 16:53:58    

Voila j ai compris un peu comment marche les threads, donc jai fait un petit exemple, le prob, c est que le but des threads, c est de pouvoir exécuter plusieurs taches simultanémént,non? Donc dans mon exemple, il devrait m afficher les chiffres de 0 à 3, toute les 2 secondes, or ce n est pas le cas, c est qqn pourrait me dire ce ki va pas, merci.
 
voici le code:
 
use Threads;
 
sub affiche
{
 local($i)=@_;
 if($i == 0)
 {
  sleep(2);
 }
 if($i==1)
 {
  sleep(4);
 }
 if($i==2)
 {
  sleep(6);
 }
 if($i==3)
 {
  sleep(8);
 }
 print"I=$i\n";
 return $i;
}
 
$i=0;
while($i<4)
{
 $thr = threads->create("affiche","$i" );
 $j=$thr->join;
 $thr->detach;
 $i++;  
}
 
use Threads;
 
sub affiche
{
 local($i)=@_;
 if($i == 0)
 {
  sleep(2);
 }
 if($i==1)
 {
  sleep(4);
 }
 if($i==2)
 {
  sleep(6);
 }
 if($i==3)
 {
  sleep(8);
 }
 print"I=$i\n";
 return $i;
}
 
$i=0;
while($i<4)
{
 $thr = threads->create("affiche","$i" );
 $j=$thr->join;
 $thr->detach;
 $i++;  
}

Reply

Sujets relatifs:

Leave a Replay

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