Estimados, tengo el siguiente código:
#!/usr/bin/perl
use strict;
use threads;
use LWP::UserAgent;
use HTTP::Request;
use threads::shared;
#my $compartida :shared = 0;
my @vector : shared;
my ($URL3,$URL2,$URL1,$idvotacion,$opcion,$min,$max);
$idvotacion = "541bac86e4b088456e71d59c";
$URL1 = "http://www.easypolls.net/poll?command=getPoll&pollId=".$idvotacion;
$URL2 = "http://www.eassypolls.net/podll?command=getPoll&pollId=".$idvotacion;
my $y = @vector;
my $r = int(rand($y));
$URL3 = "http://www.easypolls.net/poll?multResp=0&pollId=".$idvotacion."&pollKey=".$vector[$r]."&command=saveResponse";
print scalar(localtime),"\n";
my $c = 0;
threads->create('Obtener_PollKey',$URL1,1,10); #Cuenta de 1 al 5 #Se crea el thread pero no se guarda la referencia
#threads->create('Obtener_PollKey',$URL1,1,3); #Cuenta de 1 al 5 #Se crea el thread pero no se guarda la referencia
#threads->create('Obtener_PollKey',$URL1,4,6); #Cuenta de 1 al 5 #Se crea el thread pero no se guarda la referencia
#threads->create('Obtener_PollKey',$URL1,7,9); #Cuenta de 1 al 5 #Se crea el thread pero no se guarda la referencia
#threads->create('Obtener_PollKey',$URL1,10,13); #Cuenta de 1 al 5 #Se crea el thread pero no se guarda la referencia
#threads->create('Obtener_PollKey',$URL1,14,16); #Cuenta de 1 al 5 #Se crea el thread pero no se guarda la referencia
#threads->create('Realizar_Votacion',$URL3,1,16); #Cuenta de 1 al 5 #Se crea el thread pero no se guarda la referencia
threads->create('Realizar_Votacion',$URL3,1,10); #Cuenta de 1 al 5 #Se crea el thread pero no se guarda la referencia
while(threads->list(threads::running)){ #Nos da un listado de las funciones corriendo.
sleep 1;
}
map { $_->join(); } threads->list(threads::joinable); #Finalizamos las funciones que se encuentran en memoria.
for (my $i=0; $i < @vector ; $i++)
{
print "[".$i."] ".$vector[$i]."\n";
}
sub Obtener_PollKey
{
my ($url,$min,$max) = @_;
for ($min; $min < $max ; $min++ ) {
my $ua = LWP::UserAgent->new;
# $ua->proxy('http','http://200.84.78.117:8080');
$ua->agent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0");
my $req = HTTP::Request->new(GET => $url);
my $response = $ua->request($req);
my $content = $response->content();
my $status = $response->code();
if ($content =~ /(\"pollKey\":\")(.+)*$\"\,\"(a)/)
{
$vector[$min] = $2;
}
}
}
sub Realizar_Votacion
{
my ($url,$min,$max,$proxy) = @_;
for ($min; $min < $max ; $min++ ) {
my $ua = LWP::UserAgent->new;
# $ua->proxy('http','http://200.84.78.117:8080');
$ua->agent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0");
my $req = HTTP::Request->new(GET => $url);
my $response = $ua->request($req);
my $content = $response->content();
my $status = $response->code();
print "[URL VOTACION ] ".$url . "\n[CODIGO DE RESPUESTA ]= ".$status."\n";
my $y = @vector;
my $r = int(rand($y));
print "aleatorio".$vector[$r]."\n";
}
}
Por favor, si pueden ayudarme con un ejemplo básico.
Necesito lo siguiente, por favor:
Que se ejecuten dos hilos paralelos, A y B. Cada hilo tener un @vectorglobal. El hilo A llena el vector del 1 al 10 y el hilo B llena de 11 al 20.
Cuando ambos hilos TERMINEN se ejecute OTROS hilos C y D.
El C consume o muestre los números del vector del 1 al 10 y el D muestre del 11 al 20.
Por favor, si pueden ayudarme, gracias...