[Rio-pm] Multi threads
Bruno Buss
bruno.buss em gmail.com
Domingo Março 11 18:29:06 PDT 2012
2012/3/11 Aureliano Guedes <guedes_1000 em hotmail.com>
> Opa, Bruno, valeu a resposta, mas vamos ver se eu entendi
>
> eu poderia fazer assim:
>
>
> 1. use <http://perldoc.perl.org/functions/use.html> threads;
> 2.
> 3. for (my $i =1; $i = 5; $i++){
> 4. my <http://perldoc.perl.org/functions/my.html> $thr = threads->create(\&sub1);
> 5.
> 6. sub sub1 {
> 7.
> 8. }
> 9. }
>
> Mas assim não ocorreria execução simultanea, certo? Pois cada execução
> iria ocorrer uma por vez a cada contagem do contador.
>
A resposta para sua pergunta: errado.
Porém sua explicação está "correta"... a cada iteração do for, será criada
uma nova thread, então você terá disparado diversas threads até o final do
for.
Agora, o ponto em ser simultâneo é um pouco mais complicado: depende de
quantos cores tem seu sistema (se tiver menos cores que threads utilizadas,
então as threads estarão executando de forma concorrente e não simultânea),
depende do escalonador de tarefas do seu sistema operacional, dependo do
que a sua sub1 faz, etc.
Mas acho que a sua dúvida é um pouco mais básica do que isso...
Fazer:
for (my $i =1; $i <= 5; $i++){
[alguma coisa]
}
é essencialmente igual a fazer [alguma coisa] 5 vezes (tirando o fato que
você pode utilizar o parâmetro do for para fazer alterações):
[alguma coisa]
[alguma coisa]
[alguma coisa]
[alguma coisa]
[alguma coisa]
No seu caso,
for (my $i =1; $i <= 5; $i++){
my $thr = threads->create(\&sub1);
}
É igual a fazer:
my $thr = threads->create(\&sub1);
my $thr = threads->create(\&sub1);
my $thr = threads->create(\&sub1);
my $thr = threads->create(\&sub1);
my $thr = threads->create(\&sub1);
Que é exatamente o que você queria, não? ;-)
[ ]'s
--
Bruno C. Buss
http://brunobuss.wordpress.com/
http://www.dcc.ufrj.br/~brunobuss/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120311/80ec76dd/attachment-0001.html>
Mais detalhes sobre a lista de discussão Rio-pm