FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Uma experiencia positiva com Multi-Thread
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Uma experiencia positiva com Multi-Thread
Posted: Sat Nov 13, 2010 11:28 AM
pessoal,
quero compartilhar com vocês uma experiência com THREAD que tive:

Tenho um sistema que usa uma função da DLL(micro-terminal gertec) para escrever na porta serial, até ai tudo bem, porem, quando tenho varios terminais e a função que escreve esta em uma thread, acontecia do sistema gerar um erro do windows e fechar.

EX:

...

define timer otimer of ownd interval 300 action(LerTerminal())

******************************************
function LerTerminal()
local x
aTerm:=TerminaisConectados()
for x:=1 to len(aTerm)
if IsValidThread( aTerm[x,16] ) //se o terminal esta imprimindo aguarda
loop
endif
...
if imprimir()
aTerm[x,16]:=StartThread(@Acionaextrato(),nID,aTerm[x,12])
endif
next

***********************************************
function AcionaExtrato(nID,aDadosImp)
local u
for u:=1 to len(adados)
mt_sendbinserial(nID,0,cDados,48) <---Gerava ERRO!!! :-)
threadsleep(100)
next
threadsleep(100)
return nil



RESOLVIDO ASSIM:


GLOBAL pMutexaCons

...

pMutexaCons := HB_MutexCreate()

...

define timer otimer of ownd interval 300 action(LerTerminal())

******************************************
function LerTerminal()
local x
aTerm:=TerminaisConectados()
for x:=1 to len(aTerm)
if IsValidThread( aTerm[x,16] ) //se o terminal esta imprimindo aguarda
loop
endif
...
if imprimir()
aTerm[x,16]:=StartThread(@Acionaextrato(),nID,aTerm[x,12])
endif
next

***********************************************
function AcionaExtrato(nID,aDadosImp)
local u
for u:=1 to len(adados)
HB_MutexLock(pMutexaCons)
mt_sendbinserial(nID,0,cDados,48) <---AGORA OK :-)
HB_MutexUnLock(pMutexaCons)
threadsleep(100)
next
threadsleep(100)
return nil


Espero que isso possa ajudar alguem.

Fiquem com Deus
ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Uma experiencia positiva com Multi-Thread
Posted: Mon Nov 15, 2010 07:17 PM

Interesante este aporte. Muchas gracias

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Uma experiencia positiva com Multi-Thread
Posted: Wed Nov 17, 2010 07:46 AM

Gracias por el ejemplo :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1067
Joined: Wed Nov 09, 2005 02:17 AM
Re: Uma experiencia positiva com Multi-Thread
Posted: Wed Sep 04, 2013 08:46 PM

Sgs,

Estou tentando usar Multithreads, mas não consigo resolver o seguinte problema:

  • Enquanto o sistema está "Rodando", tudo vai bem - As chamadas as threads funcionam e o sistema faz exatamente o que era esperado.

  • O problema ocorre apenas quando fecho a aplicação - Apararece uma mensagem de que o "sistema não está respondendo..." e logo em segiuda uma "APPCRASH"

Vc passou por isso ?

Sds,
Vilian F. Arraes
vilian@vfatec.com.br
Belém-Pa-Brazil
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: Uma experiencia positiva com Multi-Thread
Posted: Wed Sep 04, 2013 09:05 PM

Vilian,

você esta parando/encerrando a Thread antes de fechar a aplicação?

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 1067
Joined: Wed Nov 09, 2005 02:17 AM
Re: Uma experiencia positiva com Multi-Thread
Posted: Thu Sep 05, 2013 12:47 AM

Sgs,

Sim, mas mesmo que nem execute a Thread, já gera o erro na saída, basta incluir as 2 libs para MT que na saída gera o problema.

Sds,
Vilian F. Arraes
vilian@vfatec.com.br
Belém-Pa-Brazil
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: Uma experiencia positiva com Multi-Thread
Posted: Thu Sep 05, 2013 11:36 AM

vilian,

lembro que são mais libs, e de cabeça lembro que tem uma do BCC582 também. Confirme no forum quais são elas! Não estou perto dos fontes agora.

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 1067
Joined: Wed Nov 09, 2005 02:17 AM
Re: Uma experiencia positiva com Multi-Thread
Posted: Thu Sep 05, 2013 11:51 AM

Sgg,

Já procurei em todo o forum e só encontrei orientação para usar a HBVMMT.LIB e CW32MT.LIB. Mas acho que deve ser algo na linkedição mesmo, uma vez que o problema aparece mesmo que a thread não seja executada - Basta incluir essas 2 libs no projeto que ao sair do sistema já aparece o APPCRASH.

Sds,
Vilian F. Arraes
vilian@vfatec.com.br
Belém-Pa-Brazil

Continue the discussion