Pergunta

Eu tenho um script Perl que eu estou tentando configurar usando Perl Threads (uso threads). Quando eu executar testes simples tudo funciona, mas quando eu faço o meu script real (que tem as threads em execução SQL múltipla Além disso sessões), cada SQL Mais de corridas de sessão em ordem (ou seja, linha 1 do sqlplus executado as etapas 1 -5, depois rosca 2 da sqlplus corre passos 6-11, etc.).

Eu pensei que eu entendi que tópicos faria processamento simultâneo, mas errado de alguma coisa. Todas as ideias, ou eu deveria estar fazendo alguma outra mágica Perl?

Foi útil?

Solução

Algumas explicações possíveis:

  1. Você está executando este script em um processador multi-core ou máquina multi-processador? Se você só tem uma CPU apenas um thread pode usá-lo a qualquer momento.

  2. Existem transações ou bloqueios envolvidos com passos 1-6 que iria impedi-lo de que está sendo feito simultaneamente?

  3. Você tem certeza de que você está usando múltiplas conexões para o banco de dados e não compartilhando um único entre segmentos?

Outras dicas

Na verdade, você não tem nenhuma forma de garantir a ordem em que tópicos será executado. Assim, o comportamento (se não o que você espera) não é realmente errado.

Eu suspeito que você tem algum tipo de sincronização acontecendo aqui. Possivelmente SQL * Plus apenas deixar-se de ser chamado uma vez? Alguns programas fazem isso ...

Outros possiblilties:

  • criação de threads e criação de processos (você são criar subprocessos para o SQL * Plus, não é?) Levar mais tempo do que correr o fio, então enfiar 1 está terminado antes rosca 2, mesmo começa

  • Você está usando transações em seus scripts SQL que sincronização força de atualizações do banco de dados.

Verifique as configurações de banco de dados. Você pode achar que ele está configurado de forma conservadora. Isso seria causar ainda menor lê para bloquear todo o acesso a essas informações.

Você também pode precisar de threads::yield chamada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top