Página 2 de 2
CPU 100% com o HARBOUR
Enviado: 04 Mai 2010 22:26
por Pablo César
Acho que o inkey() sem parametro, também iria ajudar. E eu experimentaria fazê-lo da mesma forma que a exibição do progress bar, cada 50, 100, 1000 (como tinha indicado acima).
Re: CPU 100% com o HARBOUR
Enviado: 04 Mai 2010 22:45
por Maligno
Inkey() não se destina exatamente a produzir delay. O mais apropriado é Millisec(), que é parte da biblioteca do [x]Harbour, aliás.
Re: CPU 100% com o HARBOUR
Enviado: 05 Mai 2010 08:58
por levis_me
Com o inkey(.01) rodou um pouco melhor, mas ainda não atende a necessidade, pois a qtd de numeros que geralmente preciso é 1 milhão, por isso fica muito lento.
Mais baixo q isso, ex: inkey(0.001) o programa não roda...
Somente com o inkey() o processamento fica a 100%.
Millisec() também não compilou.
A versão que estou usando é Harbour MiniGUI IDE (c) 2004-2007 - Versão 2.0.031a
gtProcessMessages() - não compila (undefined reference to 'HB_FUN_GTPROCESSMESSAGES')
NextKey() - idem inkey(), não muda o processamento.
Em todos os testes a tela do programa "congela"....
Re: CPU 100% com o HARBOUR
Enviado: 05 Mai 2010 10:41
por sygecom
Essa versão ai deve ser da Minigui e não do Harbour, atualize seu Harbour para a versão mais atual e use:
#include "hbcompat.ch"
gtProcessMessages()
Re: CPU 100% com o HARBOUR
Enviado: 05 Mai 2010 15:34
por Itamar M. Lins Jr.
Melhor usar o Harbour com MT.
Faz isso sem carregar o processador, essa sua rotina deve está lendo um número muito grande registros.
Veja:
Código: Selecionar todos
FunctionMain
nH1:=hb_idleAdd( {||MynhaFuncaoA()})
nH2:=hb_idleAdd( {||MynhaFuncaoB()})
.....
? HB_IDLESTATE(nH1)
? HB_IDLESTATE(nH2)
HB_IDLEDEL( nH1 )
HB_IDLEDEL( nH2 )
return
Function MinhaFuncaoA
Do While !eof() //clientes
dbskip()
hb_idleSleep(0.2) // pode ser também hb_releaseCPU()
EndDo
Function MinhaFuncaoB //receber
Do While !eof()
dbskip()
hb_idleSleep(0.2) // pode ser também hb_releaseCPU()
EndDo
Se não precisar de MT tente o hb_releaseCPU() ou hb_idleSleep(0.2) dentro do "Do While" ou "For Next"
Saudações,
Itamar M. Lins Jr.