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