[perl] De nuevo los threads

Buscador Eliana admin@eliana.com
Tue, 13 Apr 1999 16:02:49 +0200


Hola a todos.

Necesito un poquito mas de ayuda.

A ver. He conseguido (bueno, me han conseguido) compilar el Perl con
threads, aunque no en mi sistema, sino en un servidor Solaris que tenemos
por aquí al que puedo acceder mediante telnet.

El programa funciona, pero no ejecuta los hilos simultaneamente, sino uno
tras otro. Este es el programa:

#!/usr/local/bin/perl
	use Thread;

	my $t1 = new Thread \&start_sub1;
	my $t2 = new Thread \&start_sub2;

	print $t1->tid;
	print "\n";
	print $t2->tid;
	print "\n";

	print Thread->list;
	print "\n";

	for ($i=1;$i<=1000000;$i++) {
	}

	print "Fin programa. \n";

#	$t1->join;		# Esto da el mismo resultado.
#	$t2->join;


exit;

sub start_sub1 {
	for ($i2=1;$i2<=100;$i2++) {
	}
	print "Hecho1. \n";
}

sub start_sub2 {
	for ($i3=1;$i3<=100;$i3++) {
	}
	print "Hecho2. \n";
}


Como podeis ver, creo dos hilos, que ejecutan dos rutinas de muy corta
duración. Se supone que al crearlos se empiezan a ejecutar (al menos eso
dice la documentación), y continuo tambien realizando un bucle más largo.
Para ver si los hilos estan, pido los TID y un Thread->list.

Cabe esperar que primero se terminen los hilos, ya que duran menos, pero lo
que sucede es que primero se ejecuta el bucle del cuerpo del programa y
despues los dos hilos, uno tras otro.

He tapado los 'join', pero el resultado es el mismo.

El resultado de este programa es:

1
2
Thread=SCALAR(0xcc7d4)Thread=SCALAR(0xcc7ec)Thread=SCALAR(0x106c20)
Fin programa.
Hecho1.
Hecho2.   

Alguien tien una varita mágica para esto ?

Gracias mil.

Un saludo,



José Manuel Abraldes.
mailto:admin@eliana.com
Buscador Eliana (http://www.eliana.com)

--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : cancelacion perl