 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
mastersoftware Aprendiz

Registrado: Sexta-Feira, 30 de Mai de 2008 Mensagens: 187
|
Enviada: Seg Set 02, 2019 8:16 am Assunto: Dúvida com Thread |
|
|
Bom dia pessoal,
Tenho a seguinte questão :
1 ) Tenho uma rotina que percorre um banco de dados, que tem informações de arquivos que precisam sem escritos, poderá ter até 100 cadastros.
2 - ) A aplicação precisa percorrer registro a registro, e coletar as informações, e escrever os arquivos.
3 - ) O arquivos a serem escritos podem ser grande tamanho.
4 - ) Precisam ser escritos sequencialmente, ou seja a cada arquivo escrito, dai então a aplicação irá para o próximo.
Desenvolvi o código abaixo usando Thread.
Problemas :
1 - ) Da forma que está todos os JOBs, são executados ao mesmo tempo, coisa que conforme percebi, não poderá acontecer, pois se o banco de dados for muito grande, o consumo de memória por JOB, fica imenso.
Eu preciso que mesmo que esteja usando o conceito de paralelismo da Thread, esta rotina funcione serializada, ou seja, registro a registro, somente quando uma Thread terminar, a outra poderá começar.
Tentei utilziando WaitFor, mas como ele está no processo principal travou a aplicação, coisa que não pode acontecer.
Tentei várias possibilidades mas não consegui, alguém poderia dar uma dica de como fazer isso ?
Executar a Thread sequencialmente, porem com o paralelismo ?
while not dm.quArquivos do
begin
nControleThreads := nControleThreads + 1;
thEscreveArquivo:= tEscreveArquivo.Create(True);
thEscreveArquivo.sDriverId := dm.quBancoTIPO_BANCO.AsString;
thEscreveArquivo.sDataBase := dm.quBancoDATABASE.AsString;
thEscreveArquivo.sOwner := dm.quBancoOWNER.AsString;
thEscreveArquivo.sServer := dm.quBancoSERVIDOR.AsString;
thEscreveArquivo.sipserver := dm.quBancoIP.AsString;
thEscreveArquivo.sPort := dm.quBancoPORTA.AsString;
thEscreveArquivo.sCharacterSet := 'utf8';
thEscreveArquivo.sUserName := dm.quBancoUSUARIO.AsString;
thEscreveArquivo.sPassWord := dm.quBancoSENHA.AsString;
thEscreveArquivo.sTodosDatabase :=
dm.quBancoTODOS_DATABASE.AsString;
thEscreveArquivo.sNomeArquivo := sNomeArquivoOrigem;
thEscreveArquivo.sNomeArquivoZip := sNomeArquivoZipDestino;
thEscreveArquivo.sSenhaCritpoGrafia :=
dm.quConfigsenha_criptografia.AsString;
thEscreveArquivo.sAlias := dm.quBancoALIAS.AsString;
thEscreveArquivo.sCaminho := sCaminho;
thEscreveArquivo.IidBanco := dm.quBancoID.AsInteger;
thEscreveArquivo.FreeOnTerminate := True;
thEscreveArquivo.OnTerminate := ControleThreads;
thEscreveArquivo.Start;
Sleep(2000);
dm.quArquivos.Next;
end; |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Dom Set 08, 2019 12:07 pm Assunto: |
|
|
Amigo, eu sei que no guia do desenvolvedor Delphi 5 tem o que você quer, ou seja, sincronização de threads.
Eu tenho o pdf dele também, caso precise, eu posto no dropbox e você baixa.
Bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I
Editado pela última vez por johnny-walker em Sex Set 13, 2019 8:32 am, num total de 1 vez |
|
Voltar ao Topo |
|
 |
jheckson Novato

Registrado: Domingo, 30 de Outubro de 2016 Mensagens: 27
|
Enviada: Seg Set 09, 2019 8:12 am Assunto: |
|
|
johnny-walker escreveu: | Amigo, eu sei que no guia do desenvolvedor Delphi 5 tem o que você quer, ou seja, sincronização de threads.
Eu tenho o pdf dele também, caso precise, eu posto no dropbox e você baixa.
Bye |
Disponibiliza o link para mim também, se poder! |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Sex Set 13, 2019 8:34 am Assunto: |
|
|
Ok, amigo, vou disponibilizar os links. _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
|
Voltar ao Topo |
|
 |
jheckson Novato

Registrado: Domingo, 30 de Outubro de 2016 Mensagens: 27
|
Enviada: Ter Set 24, 2019 8:53 am Assunto: |
|
|
Obrigado. |
|
Voltar ao Topo |
|
 |
mastersoftware Aprendiz

Registrado: Sexta-Feira, 30 de Mai de 2008 Mensagens: 187
|
Enviada: Dom Set 29, 2019 8:51 am Assunto: |
|
|
Bom dia,
Desculpem a demora na resposta, consegui aqui também.
Obrigado. |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|