sar casos para ithreads (threads de intérprete) no Perl e justificativa para usá-los ou nã

Se você quiser aprendercom para usar threads de interpretador Perl, há uma boa documentação emperlthrtut (tutorial de tópicos) eathreads pragma manpage. Definitivamente, é bom o suficiente escrever alguns scripts simple

No entanto, encontrei pouca orientação na web emporqu eo qu para usar sensatamente os threads de intérprete do Perl. De fato, não se fala muito sobre eles, e se as pessoas falam sobre elas, muitas vezes desencorajam as pessoas a usá-la

Estes tópicos, disponíveis quandoperl -V:useithreads éuseithreads='define'; e desencadeada poruse threads, também são chamados ithreads e talvez de maneira mais apropriada, pois são muito diferentes dos encadeamentos oferecidos pelos sistemas operacionais Linux ou Windows ou da Java VM, pois nada é compartilhado por padrão e, como muitos dados são copiados, não apenas a pilha de encadeamentos , aumentando assim significativamente o tamanho do processo. (Para ver o efeito, carregue alguns módulos em um script de teste, crie segmentos em um loop pausando cada vez que pressionar teclas e observe a memória aumentar no gerenciador de tarefas outop.)

toda vez que você inicia um thread, todas as estruturas de dados são copiadas para o novo thread. E quando digo tudo, quero dizer tudo. Isto p. inclui esconderijos de pacote, variáveis globais, léxico no escopo. Tudo

-oisas que você precisa saber antes de programar roscas Perl (Perlmonks 200

Ao pesquisar o assunto dos ithreads do Perl, você verá pessoas desencorajando você a usá-los "idéia extremamente ruim", "fundamentalmente defeituosa" ou "nunca use ithreads para nada").

O tutorial de discussão do Perl destaca que "Os threads do Perl são diferentes", mas não se preocupa muito em explicar como elas são diferentes e o que isso significa para o usuári

Uma explicação útil, mas muito breve, sobre o que realmente é ithreads édeCoro manpage sob o cabeçalho EMULAÇÃO DO PROCESSO WINDOWS. O autor desse módulo Coro - os únicos threads reais no perl) também desencoraja o uso de threads de interpretador Per

m algum lugar que li que a compilação de perl com threads ativados resultará em um intérprete significativamente mais lent

Há uma página Perlmonks de 2003 oisas que você precisa saber antes de programar ithreads do Pe), na qual o autor pergunta: "Agora você pode se perguntar por que o Perl ithreads não usou fork ()? Isso não faria muito mais sentido?" Isso parece ter sido escrito pelo autor doforks pragma. Não tenho certeza se as informações fornecidas nessa página ainda são válidas em 2012 para os Perls mais recentes.

qui estão algumas diretrizes para o uso de threads no Perl que eu destilei das minhas leituras (talvez erroneamente

Considere usar IO sem bloqueio em vez de threads, comoHTTP::Async ouAnyEvent::Socket ouCoro::Socket.Considere usando threads de intérprete Perl apenas no Windows, não no UNIX, porque no UNIX, os garfos são mais eficientes tanto para a memória quanto para a velocidade de execução.Criar threads no início do programa, não quando o consumo de memória já é considerável - veja "maneira ideal de reduzir esses custos" emperlthrtut. Minimizar a comunicação entre threadsporque é lento (todas as respostas nessa página

Até agora minha pesquisa. Agora, obrigado por mais alguma luz, você pode lançar sobre esta questão de threads no Perl. Quais são alguns casos de uso sensatos para ithreads no Perl? Qual é a justificativa para usá-los ou não?

questionAnswers(4)

yourAnswerToTheQuestion