<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>
Na verdade, eu acho que minha pergunta que foi feita de forma errada.<br>Eu queria, por exemplo, dar ping em um servidor ate derruba-lo, contudo eu queria para isso enviar digamos, 5 pacotes simultaneos,<br>inves de enviar 1 por vez.<br><br>Mas eu entendi quanto a usar o laço, talvez eu realmente faça isso. Contudo,<br>usar <br><br>for (my $i =1; $i <= 5; $i++){<br>my $thr = threads->create(\&sub1);<br>
}<br><br>não é o mesmo que usar apenas<br><br>for (my $i =1; $i <= 5; $i++){<br>&sub1;<br>
}<br><br>se a função do meu sub1 for apenas enviar pacotes a um servidor???<br><br><div><div id="SkyDrivePlaceholder"></div><hr id="stopSpelling">From: bruno.buss@gmail.com<br>Date: Sun, 11 Mar 2012 22:29:06 -0300<br>To: rio-pm@pm.org<br>Subject: Re: [Rio-pm] Multi threads<br><br><div class="ecxgmail_quote">2012/3/11 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com">guedes_1000@hotmail.com</a>></span><br><blockquote class="ecxgmail_quote" style="border-left:1px #ccc solid;padding-left:1ex">




<div><div dir="ltr">
Opa, Bruno, valeu a resposta, mas vamos ver se eu entendi<br><br> eu poderia fazer assim:<br><br><pre><ol><li>    <a href="http://perldoc.perl.org/functions/use.html" target="_blank">use</a> <span>threads</span><span>;</span></li>

<li> </li><li>    for (my $i =1; $i = 5; $i++){<br></li><div class="ecxim"><li>    <a href="http://perldoc.perl.org/functions/my.html" target="_blank">my</a> <span>$thr</span> = <span>threads</span><span>->create</span><span>(</span>\<span>&sub1</span><span>)</span><span>;</span></li>

<li><br></li><li><a name="13604645bef1a690_sub1" target="_blank"></a>    sub <span>sub1</span> <span>{</span></li><li>       <span></span></li><li>    <span>}</span></li><li><span>}<br></span></li></div></ol></pre>Mas assim não ocorreria  execução simultanea, certo? Pois cada execução iria ocorrer uma por vez a cada contagem do contador.<br>

</div></div></blockquote><div><br clear="all">A resposta para sua pergunta: errado.<br>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.<br>

<br>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.<br>

<br>Mas acho que a sua dúvida é um pouco mais básica do que isso...<br><br>Fazer:<br>for (my $i =1; $i <= 5; $i++){<br>[alguma coisa]<br>}<br><br>é essencialmente igual a fazer [alguma coisa] 5 vezes (tirando o fato que você pode utilizar o parâmetro do for para fazer alterações):<br>

[alguma coisa]<br>[alguma coisa]<br>[alguma coisa]<br>[alguma coisa]<br>[alguma coisa]<br><br>No seu caso, <br>for (my $i =1; $i <= 5; $i++){<br>my $thr = threads->create(\&sub1);<br>
}<br><br>É igual a fazer:<br>my $thr = threads->create(\&sub1);<br>my $thr = threads->create(\&sub1);<br>my $thr = threads->create(\&sub1);<br>my $thr = threads->create(\&sub1);<br>my $thr = threads->create(\&sub1);<br>

<br>Que é exatamente o que você queria, não? ;-)<br><br>[ ]'s<br></div></div>-- <br>Bruno C. Buss<br><a href="http://brunobuss.wordpress.com/" target="_blank">http://brunobuss.wordpress.com/</a><br><a href="http://www.dcc.ufrj.br/%7Ebrunobuss/" target="_blank">http://www.dcc.ufrj.br/~brunobuss/</a><br>


<br>_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm</div>                                    </div></body>
</html>