[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