[caracas-pm] Hilos en Perl

Alberto Mijares amijaresp at gmail.com
Fri Nov 1 22:02:47 PDT 2013


Hola lista,

Estoy jugando un poco, de manera didàctica, con el módulo "threads" de
Perl. Quería ver qué tanto podía mejorar un script sencillo que tengo
para redimencionar fotos.

El script original tenía algo como

my @fotos = readdir($dir);
for my $pic (@fotos) {
    if ($pic =~ m/jpe*g$/i) {
    say "Trabajando con $pic";
    &procesar($pic);
    }
}

y lo cambié por

my @fotos = readdir($dir);
for my $pic (@fotos) {
    if ($pic =~ m/jpe*g$/i) {
    say "Trabajando con $pic";
    my $th = threads->create('procesar', $pic);
    say "this is thread" . $th->tid;
    $th->detach;
    }
}

pero así no se procesa la imagen. Lo curioso es que si en vez de
->detach, uso ->join, sí se procesa normalmente como en el script
original. Lo que pasa es que ->join, como bien saben, espera que el
hilo culmine para obtener su retorno, y es exactamente igual que
hacerlo de manera secuancial sin hilos, incluso un poco más lento.

Para el procesamiento de imágenes estoy usando Image::Scale, dentro de
la función "procesar".

¿Alguna pista de por qué no se ejecuta la función cuando uso el método ->detach?

Gracias de antemano.

Saludos


Alberto Mijares


More information about the caracas-pm mailing list