CPU 100% com o HARBOUR

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

CPU 100% com o HARBOUR

Mensagem 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).
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: CPU 100% com o HARBOUR

Mensagem por Maligno »

Inkey() não se destina exatamente a produzir delay. O mais apropriado é Millisec(), que é parte da biblioteca do [x]Harbour, aliás.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
levis_me
Usuário Nível 1
Usuário Nível 1
Mensagens: 8
Registrado em: 27 Abr 2010 16:41
Localização: americana

Re: CPU 100% com o HARBOUR

Mensagem 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"....
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: CPU 100% com o HARBOUR

Mensagem 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()
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: CPU 100% com o HARBOUR

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Responder