ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Dúvida com Thread

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
mastersoftware
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 30 de Mai de 2008
Mensagens: 187

MensagemEnviada: Seg Set 02, 2019 8:16 am    Assunto: Dúvida com Thread Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Set 08, 2019 12:07 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
jheckson
Novato
Novato


Registrado: Domingo, 30 de Outubro de 2016
Mensagens: 27

MensagemEnviada: Seg Set 09, 2019 8:12 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sex Set 13, 2019 8:34 am    Assunto: Responder com Citação

Ok, amigo, vou disponibilizar os links.
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Set 22, 2019 1:13 pm    Assunto: Responder com Citação

Amigo tente neste site o livro, está difícil arrumar um tempinho para procurar o livro.
http://www.planetadelphi.com.br/download/4072/apostila/guia-do-desenvolvedor---delphi-5



Bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
jheckson
Novato
Novato


Registrado: Domingo, 30 de Outubro de 2016
Mensagens: 27

MensagemEnviada: Ter Set 24, 2019 8:53 am    Assunto: Responder com Citação

johnny-walker escreveu:
Amigo tente neste site o livro, está difícil arrumar um tempinho para procurar o livro.
http://www.planetadelphi.com.br/download/4072/apostila/guia-do-desenvolvedor---delphi-5

Bye


Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mastersoftware
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 30 de Mai de 2008
Mensagens: 187

MensagemEnviada: Dom Set 29, 2019 8:51 am    Assunto: Responder com Citação

Bom dia,
Desculpem a demora na resposta, consegui aqui também.
Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB