<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Webdings;
        panose-1:5 3 1 2 1 5 9 6 7 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EstiloDeEmail17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EstiloDeEmail18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=PT-BR link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal>Pessoal, boa tarde!<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Estou desenvolvendo um servidor e cliente em Perl para
comunicação via socket.<o:p></o:p></p>
<p class=MsoNormal>Para agilizar o processo estou utilizando thread no
servidor.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Meu sistema operacional é: HP-UX B.11.23 U ia64<o:p></o:p></p>
<p class=MsoNormal>Perl: 5.8.9<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Meu problema é que para cada requisição que faço do cliente
para o servidor, a quantidade de uso de páginas aumenta mesmo quando a thread
terminou sua execução.<o:p></o:p></p>
<p class=MsoNormal>(Ou seja, o consumo de memória do servidor aumenta)<o:p></o:p></p>
<p class=MsoNormal style='margin-bottom:12.0pt'>Não sei se está ficando algum
lixo de memória.<o:p></o:p></p>
<p class=MsoNormal>O estranho é que o mesmo código sem thread o consumo de
memória do servidor fica sempre igual.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>O comando que estou utilizando para monitorar o consumo de
memória é: kmeminfo -u<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Antes eu utiliza a função de thread “detach” agora estou
usando o “join”.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Alguém pode me ajudar?<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Obrigado.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Segue o código que estou usando para o servidor:<o:p></o:p></p>
<p class=MsoNormal>use threads;<o:p></o:p></p>
<p class=MsoNormal>use IO::Socket;<o:p></o:p></p>
<p class=MsoNormal>use Getopt::Long;<o:p></o:p></p>
<p class=MsoNormal>&GetOptions(
"servidor:s" => \$pServidor,<o:p></o:p></p>
<p class=MsoNormal style='margin-left:70.8pt'>"porta:s"
=> \$pPorta,<o:p></o:p></p>
<p class=MsoNormal>
"comando:s" => \$pComando,<o:p></o:p></p>
<p class=MsoNormal>
"log:s" => \$pLog,<o:p></o:p></p>
<p class=MsoNormal>
);<o:p></o:p></p>
<p class=MsoNormal>$sock = new IO::Socket::INET ( LocalAddr =>
"$pServidor",<o:p></o:p></p>
<p class=MsoNormal>
LocalPort => "$pPorta",<o:p></o:p></p>
<p class=MsoNormal>
Proto => 'tcp',<o:p></o:p></p>
<p class=MsoNormal>
Listen => 5,<o:p></o:p></p>
<p class=MsoNormal>
Reuse => 0) or die ("problem binding to socket.");<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>while ($client = $sock->accept()) {<o:p></o:p></p>
<p class=MsoNormal>
$client->autoflush(1);<o:p></o:p></p>
<p class=MsoNormal> $sockthread =
threads->new(\&serviceClient,$client,$cipher);<o:p></o:p></p>
<p class=MsoNormal>
$sockthread->join;<o:p></o:p></p>
<p class=MsoNormal> undef $client;<o:p></o:p></p>
<p class=MsoNormal> undef
$sockthread;<o:p></o:p></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal>################################################################################<o:p></o:p></p>
<p class=MsoNormal>sub serviceClient {<o:p></o:p></p>
<p class=MsoNormal> $cliente = $_[0];<o:p></o:p></p>
<p class=MsoNormal> $msg =
<$cliente>;<o:p></o:p></p>
<p class=MsoNormal>
$msg=~s/\\\{n\}/\n/g;<o:p></o:p></p>
<p class=MsoNormal> $w1 = `$pComando
$msg`;<o:p></o:p></p>
<p class=MsoNormal> print $client
"$w";<o:p></o:p></p>
<p class=MsoNormal>
$client->shutdown(2);<o:p></o:p></p>
<p class=MsoNormal> undef $_[0];<o:p></o:p></p>
<p class=MsoNormal> undef $cliente;<o:p></o:p></p>
<p class=MsoNormal> undef $msg;<o:p></o:p></p>
<p class=MsoNormal> undef $w1;<o:p></o:p></p>
<p class=MsoNormal> return;<o:p></o:p></p>
<p class=MsoNormal>}<o:p></o:p></p>
<p class=MsoNormal>################################################################################<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";
color:#1F497D'>Guilherme Luis Eberhardt<br>
</span><b><span style='font-size:24.0pt;font-family:Webdings;color:#009900'>P</span></b><b><span
style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#009900'> Antes
de imprimir, pense em sua responsabilidade ambiental !</span></b><b><span
style='font-family:"Arial","sans-serif";color:#009900'><o:p></o:p></span></b></p>
<p class=MsoNormal><o:p> </o:p></p>
</div>
</body>
</html>