[Cascavel-pm] Threads em Perl

Nilson Santos Figueiredo Junior acid06 em gmail.com
Terça Julho 31 19:20:53 PDT 2007


On 7/31/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
>   Perl escolheu suportar Processos, não threads.
>   O suporte a Threads é simplesmente horrível.

Não é exatamente assim.

O suporte à threads é muito bom. O threading model que é ruim. Ele é
ineficiente (apesar de completamente seguro). A idéia é que cada
thread é um interpretador quase completamente separados dos outros,
clonado do pai, sem o benefício de memória compartilhada por
Copy-on-Write.

Contudo, na minha opinião *a API* para threads é muito boa mesmo,
apesar de tudo. Inclusive, existe um módulo chamado "forks" que
implementa a API dos threads só que usando processos. Com ele você
pode ter todos os benefícios da API dos threads (incluindo, por
exemplo, variáveis compartilhadas) com a eficiência (em OSes dotados
de CoW) dos processos.

Outro benefício é que você consegue escrever código usando IPC que vai
ser portável. Pelo menos 90% dos programadores em Perl não sabem
escrever IPC que vai funcionar em Windows porque usam signal handlers.
Usando o módulo forks você tem um fallback ótimo: se estiver sob
Windows, use threads, se estiver em outro OS, use forks. O forks
oferece a conveniência de se instalar sob o namespace "threads" caso
você assim queira, dessa forma, você pode usar threads->create() e na
verdade ele vai criar um processo.

Assim você consegue uma API limpa, IPC facilitado, garantia de
portabilidade e o melhor dos dois mundos.

  http://search.cpan.org/~rybskej/forks-0.24/

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm