Estou com um problema e preciso de algumas dicas para tentar resolvê-lo…
Desenvolvi um programa que chama um arquivo .bat e ele executa 3 tarefas consecutivas e retorna um arquivo para o programa continuar a execução…Esses 3 tarefas são sequenciais, isto é, o resultado de um é a entrada do outro…
Até aki tudo funcionando perfeitamente…
Agora entra o problema…Eu preciso fazer com que eles executem de forma paralela, ou seja, enquanto a primeira tarefa é realizada e gera um arquivo, a segunda já pega esse arquivo gerado (é claro, em partes) e vai executando para adiantar, e assim por diante…
Alguém tem alguma idéia de como eu poderei fazer isso??Tem como eu implementar uma thread num simples arquivo .bat??Alguém tem algum código referência para me ajudar??
Isso de gerar várias partes para serem processadas, ele está gravando as partes dentro do mesmo arquivo ou em arquivos separados.
Eu acho estranho ele não liberar o arquivo depois que você terminou de gravar nele, se bem o próprio Java também tem esses bugs, basta dar um System.gc() pra liberar…
Enfim, eu procuraria saber por que ele não está liberando antes de chamar o próximo programa, pois acho que esse é o caminho certo.
Ele gera um segundo arquivo (com nome e tipo diferente) do arquivo lido…
O problema não é depois que termino…o problema é durante a gravação do arquivo…Nesse momento que fico impossibilitado de lê-lo!!Depois que termina consigo normalmente!!
E eu preciso tentar colocá-los como se fosse em tempo real!!!
Enquanto um arquivo estiver travado em modo de escrita pelo SO, nenhum outro processo pode ler ou escrever nele até que o processo e o SO liberem o recurso.
Por isso que perguntei se ele grava o resultado do primeiro processamento em vários arquivos. Se ele fizer essas gravações pequenas enquanto está processando, dá até para algum outro programa ficar monitorando o diretório e dispararar para outro realizar o processamento.
Fora isso, só com um programa multithread que implemente todas as fases do processamento. É até melhor por causa do overhead da primeira opção.
Mas tem que ser um bat? Escreve um programa em Java, C, Delphi, ou qualquer linguagem que te dê mais recursos. Vc nem precisaria ficar mexendo com arquivos só pra passar informações de uma thread para outra.