[Perl] Pregunta #2: Deshebrando los hilos...
Alejandro G. Bedoya
nezumi@prodigy.net.mx
Thu, 04 Mar 2004 11:35:50 -0600
Saludos!!!
Haciendo una practica de manejo de hilos, hice este programita, maneja
dos hilos pero como le puedo hacer para que haga muchos hilos de
depositos y retiros???
Que tan avanzado esta el manejo de hilos en PERL???
Atte.
Alejandro Deshilando...
#!/usr/bin/perl
use threads;
use threads::shared;
our $Saldo : shared = 100;
my $Thr1= threads->new(\&DEPOSITO);
my $Thr2= threads->new(\&RETIRO);
$Thr1->join;
print "Termina deposito!!!\n";
$Thr2->join;
print "Termina retiro!!!\n";
sub DEPOSITO {
for(my $J=1; $J<50; $J++) {
my $Cant=int(rand()*10);
$Saldo=$Saldo+$Cant;
print "DEPOSITO #$J: de \$$Cant, saldo \$$Saldo\n";
sleep(rand()*2);
}
}
sub RETIRO {
for(my $K=1; $K<50; $K++) {
my $Cant=int(rand()*100);
my $Flag=0;
while ($Saldo-$Cant<0) {
$Flag++;
if ($Flag>10) { last; }
print " Cheque #$K por $Cant no se puede cobrar, saldo de
\$$Saldo. Intento #$Flag\n";
sleep(1);
}
if ($Flag>10) { print " Cheque #$K fue cancelado\n"; next; }
if ($Flag>0) { print " Ya hay un saldo de \$$Saldo para pagar el
cheque #$K por \$$Cant, despues de $Flag intentos\n"; }
$Saldo=$Saldo-$Cant;
print "CHEQUE #$K: de \$$Cant, saldo de \$$Saldo\n";
sleep(rand()*2);
}
}