[SP-pm] Threads em Perl

Luis Motta Campos luismottacampos at yahoo.co.uk
Tue Feb 3 13:14:03 PST 2009


Guilherme Luis Eberhardt wrote:
> Pessoal, boa tarde!
> 
> Estou desenvolvendo um servidor e cliente em Perl para comunicação
> via socket.
> 
> Para agilizar o processo estou utilizando thread no servidor.
> 
> Meu sistema operacional é: HP-UX B.11.23 U ia64
> 
> Perl: 5.8.9
> 
> 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.
> 
> (Ou seja, o consumo de memória do servidor aumenta)
> 
> Não sei se está ficando algum lixo de memória.
> 
> O estranho é que o mesmo código sem thread o consumo de memória do
> servidor fica sempre igual.
> 
> O comando que estou utilizando para monitorar o consumo de memória é:
>  kmeminfo -u
> 
> Antes eu utiliza a função de thread “detach” agora estou usando o
> “join”.
> 
> Alguém pode me ajudar?

Em poucas palavras, Guilherme: isso é Perl, não Java. As estratégias e 
as vantagens de Java normalmente aqui são mal-vistas por serem ineficientes.

O meu conselho é que você pare de usar threads (e evite o problema de 
reclama memória, que, apesar de parecer simples, não é nada trivial de 
implementar satisfatoriamente em Perl) e passe a usar processos e fork() 
para implementar um servidor. É mais de acordo com a filosofia de 
trabalho do mundo unix, e mais elegante e bem conhecido como solução 
dentro do mundo Perl.

Com sorte, você vai até conseguir usar um dos "servidores em lata" que 
existem no CPAN, e implementar apenas a função que executa o serviço 
(deixando o gerenciamento de servidor totalmente ao cargo de uma 
biblioteca pronta).

Alguém com menos álcool no sangue que eu pode por favor apontar os 
módulos no CPAN para o Guilherme?

Putamplexos!
-- 
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.


More information about the SaoPaulo-pm mailing list