problème avec les threads - Perl - Programmation
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.
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++;
}
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