100¬ de consumo de CPU
Alguém sabe por que alguns programas quando rodam certas rotinas ficam com 100¬ de uso de CPU? Alguém sabe como amenizar isso? Eu poderia usar Threads?
Estou fazendo um programa que varre o registro do Windows, mas o chato é que ele fica com esses malditos 100¬.
Mas o pior é outro programa de um colega meu, que roda como um serviço e fica pingando para um servidor de tempos em tempos. Mas ele fica direto com esses 100¬, precisávamos tirar isso. Como os outros programas fazem coisas e não ficam assim?
Estou fazendo um programa que varre o registro do Windows, mas o chato é que ele fica com esses malditos 100¬.
Mas o pior é outro programa de um colega meu, que roda como um serviço e fica pingando para um servidor de tempos em tempos. Mas ele fica direto com esses 100¬, precisávamos tirar isso. Como os outros programas fazem coisas e não ficam assim?

Renatosilva
Curtidas 0
Respostas

Elciodramos
15/04/2005
E ai galera
Tenho uma aplicacao com uma Thread e consegui resolver este problema com Sleep(1) cada vez que e executada.
Fora a Thread outra coisa que faco para resolver e application.processMessages em repeticoes tipo WHILE
Tenho uma aplicacao com uma Thread e consegui resolver este problema com Sleep(1) cada vez que e executada.
Fora a Thread outra coisa que faco para resolver e application.processMessages em repeticoes tipo WHILE
GOSTEI 0

Renatosilva
15/04/2005
Mas como é esse lance de Sleep? Poderia explicar melhor?
GOSTEI 0

Dopi
15/04/2005
O Sleep apenas interrompe a execução do programa ou processo por n Milisegundos...
Isso faz o Windows perceber que a aplicação está livre e consegue transferir um processamento para outra tarefa..
Qualquer laço pode consumir muita CPU enquanto estiver rodando, afinal vc está instruindo o micro a ficar trabalhando repetidamente... não há ´estado de espera´
Insira um sleep( n ) dentro do laço... Experimente n de 1 a 100 e veja os resultados, se o laço ficar lento use intervalos menores...
Isso faz o Windows perceber que a aplicação está livre e consegue transferir um processamento para outra tarefa..
Qualquer laço pode consumir muita CPU enquanto estiver rodando, afinal vc está instruindo o micro a ficar trabalhando repetidamente... não há ´estado de espera´
Insira um sleep( n ) dentro do laço... Experimente n de 1 a 100 e veja os resultados, se o laço ficar lento use intervalos menores...
GOSTEI 0