[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