Uma experiencia positiva com Multi-Thread

Post Reply
MGA
Posts: 1258
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá
Contact:

Uma experiencia positiva com Multi-Thread

Post by MGA »

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!!! :cry:
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 :D
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
horacio
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Uma experiencia positiva com Multi-Thread

Post by horacio »

Interesante este aporte. Muchas gracias
User avatar
Antonio Linares
Site Admin
Posts: 42513
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 73 times
Contact:

Re: Uma experiencia positiva com Multi-Thread

Post by Antonio Linares »

Gracias por el ejemplo :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
vilian
Posts: 985
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil
Contact:

Re: Uma experiencia positiva com Multi-Thread

Post by vilian »

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
MGA
Posts: 1258
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá
Contact:

Re: Uma experiencia positiva com Multi-Thread

Post by MGA »

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
User avatar
vilian
Posts: 985
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil
Contact:

Re: Uma experiencia positiva com Multi-Thread

Post by vilian »

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
MGA
Posts: 1258
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá
Contact:

Re: Uma experiencia positiva com Multi-Thread

Post by MGA »

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
User avatar
vilian
Posts: 985
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil
Contact:

Re: Uma experiencia positiva com Multi-Thread

Post by vilian »

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
Post Reply