[SP-pm] WWW::Curl::Multi

Luis Motta Campos luismottacampos at yahoo.co.uk
Sun Sep 6 02:05:13 PDT 2009


Nilson Santos Figueiredo Jr. wrote:
> 2009/9/4 Luis Motta Campos <luismottacampos em yahoo.co.uk>:
>>> threads nem pensar?
>> **NEM** **PENSAR**.
> 
> Pode dar um bom motivo?

Claro. Continua lendo, por favor. :)

> Eu já utilizei threads com sucesso diversas vezes e, inclusive, tenho
> um módulo na CPAN pra ajudar a trabalhar de forma "transparente" com
> threads (aquele que eu apresentei numa lightning talk ano passado).
> 
> Óbvio que você não vai poder usar coisas que não são thread-safe.

Isso é uma parte do meu bom motivo. O resto segue embaixo:

Tradicionalmente o mundo unix não emprega threads para trabalhar. É 
prática comum usar processos e fork() para servir múltiplos clientes ao 
mesmo tempo.

Não, não vem com babelas sobre performance: se você desenhar o seu 
serviço direito, tanto faz. Por exemplo, o Apache é o mais tradicional 
servidor fork-based disponível, mas muitos outros produtos open-source 
também o são.

O problema não está nos threads, mas no desenho da linguagem e na 
abordagem que a gente usa para programar módulos.

Nem todos os módulos Perl são thread-safe. Assim, ao invés de se impôr 
uma limitação tão grande para começar, eu recomendo fortemente que 
ninguém use threads em sistemas de produção.

> O *suporte* a threads em Perl 5.8.x é ótimo, ao contrário do que
> disseram. O problema é que a escolha de implementação é infeliz, então
> você não tem threads "leves" mas threads "pesados", como se fossem
> processos. Mas o que está implementado, sempre funcionou quando
> precisei.

Bom, aí tem mais um motivo para preferir threads a processos em Perl: 
threads são tão pesados quanto processos, mas mais difíceis de usar e 
manejar.

> Na verdade, o único ponto contra que consigo pensar é que tem uma
> regressão no Perl 5.10.0 relacionada a threads (que já foi corrigida).
> Mas se fosse assim ninguém iria poder usar Unicode porque o Perl 5.8.0
> tinha diversos problemas. Versões .0 são assim mesmo.

Bom, baseado no que você me disse, parece que a implementação atual de 
threads é altamente experimental. Com a minha experiência em Unix, eu 
prefiro normalmente inciar novos processos ao invés de usar Threads. 
Claro, se você está testando novas capacidades para o Perl, por favor 
continue usando threads. :) Todos os bug-reports são muito bem-vindos.

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


More information about the SaoPaulo-pm mailing list