Página 1 de 1

Duda sobre hilos

NotaPublicado: 2012-11-07 14:25 @642
por Xer0f
Buen día.

Tengo la siguiente duda, en mi programa necesito que un hilo 1 se ejecute y otro hilo 2 esperé a que termine el hilo 1 pero hilo 2 imprima puntos (.) hasta que el hilo 1 termine.

Re: Duda sobre hilos

NotaPublicado: 2012-11-07 15:27 @685
por explorer
Bienvenido a los foros de Perl en Español, Xer0f.

¿Con fork o threads?

Re: Duda sobre hilos

NotaPublicado: 2012-11-07 17:04 @753
por Xer0f
Hola explorer, gracias por la bienvenida.

Lo quiero realizar con hilos, hasta ahora encontré una manera de esperar a que un hilo termine.

my $thread = threads->new(\&flash,$software_download); while($thread->is_running)
{
#imprimir Cargando . . .
}

No sé si exista una forma mejor para realizarlo. También quiero hacer que se vean varios puntos y simulando que está cargando.

Saludos.

Re: Duda sobre hilos

NotaPublicado: 2012-11-07 17:48 @783
por explorer
Sí, esa es una manera, la de preguntar si tal hilo sigue funcionando.

Otras... creo que son más alambicadas (semáforos, banderas...)

El progreso (con los puntos), lo tienes sencillo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $|++;  # quitamos el caché de salida
  2. while ($thread->is_running) {
  3.     print '.';    # ¡dot!
  4.     sleep 1;      # esperamos 1 s
  5. }
  6. print "\n";
  7.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Es necesario modificar $| para que la salida de los puntos sea inmediata, uno a uno. Si no, saldrían todos de golpe. Y el sleep() es necesario para que el bucle no se lleve toda la carga de la CPU.

Re: Duda sobre hilos

NotaPublicado: 2012-11-07 18:29 @811
por Xer0f
Gracias, explorer, estaba realizando de otra manera la forma de imprimir los puntos pero como tú la pones es más sencilla que la mía.