Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup es.comp.lenguajes.* Foro > Newsgroup es.comp.lenguajes.delphi
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 31-05-2004, 15:03:33
Sonic
 
Mensajes: n/a
Predeterminado CPU al 100% usando un Thread

Estoy empezando a usar Threads y ya me dan problemas.
Al ejecutar el código que os he puesto a continuacion, el uso de CPU se
dispara al 100%. ¿Como puedo evitarlo?

Necesito que el Thread esté ejecutandose continuamente mientras la
aplicacion esté en marcha.

gracias!

----------------------

unit Unit1;

interface

uses Windows, Classes, Forms;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
end;

tThread1 = class(TThread)
private
protected
procedure Execute; override;
end;

var
Form1: TForm1;
Thread1: tThread1;
Salir: Boolean;

implementation

{$R *.dfm}

procedure tThread1.Execute;
begin
repeat until Salir;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Salir:=False;
Thread1:=tThread1.Create(false);
end;

end.


Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

  #2 (permalink)  
Antiguo 31-05-2004, 20:40:45
Jose Antonio
 
Mensajes: n/a
Predeterminado Re: CPU al 100% usando un Thread

Sonic escribió:
> Estoy empezando a usar Threads y ya me dan problemas.
> Al ejecutar el código que os he puesto a continuacion, el uso de CPU se
> dispara al 100%. ¿Como puedo evitarlo?
>
> Necesito que el Thread esté ejecutandose continuamente mientras la
> aplicacion esté en marcha.
>
> gracias!
>
> ----------------------
>
> unit Unit1;
>
> interface
>
> uses Windows, Classes, Forms;
>
> type
> TForm1 = class(TForm)
> procedure FormCreate(Sender: TObject);
> private
> public
> end;
>
> tThread1 = class(TThread)
> private
> protected
> procedure Execute; override;
> end;
>
> var
> Form1: TForm1;
> Thread1: tThread1;
> Salir: Boolean;
>
> implementation
>
> {$R *.dfm}
>
> procedure tThread1.Execute;
> begin
> repeat until Salir;
> end;
>


Aquí estas consumiendo toda la cpu, métele un pequeño retardo de 10 ms,
te servirá, aunque esta no es la forma más elegante de hacerlo:

procedure tThread1.Execute;
begin
repeat
sleep(10);
until Salir;
end;

La forma bonita, sería hacerlo con eventos, y esa espera activa por una
espera del tipo WaitForSingleObject, del sistema operativo.


Saludos.

Jose
Responder Con Cita
  #3 (permalink)  
Antiguo 31-05-2004, 20:40:45
Jose Antonio
 
Mensajes: n/a
Predeterminado Re: CPU al 100% usando un Thread

Sonic escribió:
> Estoy empezando a usar Threads y ya me dan problemas.
> Al ejecutar el código que os he puesto a continuacion, el uso de CPU se
> dispara al 100%. ¿Como puedo evitarlo?
>
> Necesito que el Thread esté ejecutandose continuamente mientras la
> aplicacion esté en marcha.
>
> gracias!
>
> ----------------------
>
> unit Unit1;
>
> interface
>
> uses Windows, Classes, Forms;
>
> type
> TForm1 = class(TForm)
> procedure FormCreate(Sender: TObject);
> private
> public
> end;
>
> tThread1 = class(TThread)
> private
> protected
> procedure Execute; override;
> end;
>
> var
> Form1: TForm1;
> Thread1: tThread1;
> Salir: Boolean;
>
> implementation
>
> {$R *.dfm}
>
> procedure tThread1.Execute;
> begin
> repeat until Salir;
> end;
>


Aquí estas consumiendo toda la cpu, métele un pequeño retardo de 10 ms,
te servirá, aunque esta no es la forma más elegante de hacerlo:

procedure tThread1.Execute;
begin
repeat
sleep(10);
until Salir;
end;

La forma bonita, sería hacerlo con eventos, y esa espera activa por una
espera del tipo WaitForSingleObject, del sistema operativo.


Saludos.

Jose
Responder Con Cita
  #4 (permalink)  
Antiguo 31-05-2004, 20:40:45
Jose Antonio
 
Mensajes: n/a
Predeterminado Re: CPU al 100% usando un Thread

Sonic escribió:
> Estoy empezando a usar Threads y ya me dan problemas.
> Al ejecutar el código que os he puesto a continuacion, el uso de CPU se
> dispara al 100%. ¿Como puedo evitarlo?
>
> Necesito que el Thread esté ejecutandose continuamente mientras la
> aplicacion esté en marcha.
>
> gracias!
>
> ----------------------
>
> unit Unit1;
>
> interface
>
> uses Windows, Classes, Forms;
>
> type
> TForm1 = class(TForm)
> procedure FormCreate(Sender: TObject);
> private
> public
> end;
>
> tThread1 = class(TThread)
> private
> protected
> procedure Execute; override;
> end;
>
> var
> Form1: TForm1;
> Thread1: tThread1;
> Salir: Boolean;
>
> implementation
>
> {$R *.dfm}
>
> procedure tThread1.Execute;
> begin
> repeat until Salir;
> end;
>


Aquí estas consumiendo toda la cpu, métele un pequeño retardo de 10 ms,
te servirá, aunque esta no es la forma más elegante de hacerlo:

procedure tThread1.Execute;
begin
repeat
sleep(10);
until Salir;
end;

La forma bonita, sería hacerlo con eventos, y esa espera activa por una
espera del tipo WaitForSingleObject, del sistema operativo.


Saludos.

Jose
Responder Con Cita
  #5 (permalink)  
Antiguo 31-05-2004, 20:40:45
Jose Antonio
 
Mensajes: n/a
Predeterminado Re: CPU al 100% usando un Thread

Sonic escribió:
> Estoy empezando a usar Threads y ya me dan problemas.
> Al ejecutar el código que os he puesto a continuacion, el uso de CPU se
> dispara al 100%. ¿Como puedo evitarlo?
>
> Necesito que el Thread esté ejecutandose continuamente mientras la
> aplicacion esté en marcha.
>
> gracias!
>
> ----------------------
>
> unit Unit1;
>
> interface
>
> uses Windows, Classes, Forms;
>
> type
> TForm1 = class(TForm)
> procedure FormCreate(Sender: TObject);
> private
> public
> end;
>
> tThread1 = class(TThread)
> private
> protected
> procedure Execute; override;
> end;
>
> var
> Form1: TForm1;
> Thread1: tThread1;
> Salir: Boolean;
>
> implementation
>
> {$R *.dfm}
>
> procedure tThread1.Execute;
> begin
> repeat until Salir;
> end;
>


Aquí estas consumiendo toda la cpu, métele un pequeño retardo de 10 ms,
te servirá, aunque esta no es la forma más elegante de hacerlo:

procedure tThread1.Execute;
begin
repeat
sleep(10);
until Salir;
end;

La forma bonita, sería hacerlo con eventos, y esa espera activa por una
espera del tipo WaitForSingleObject, del sistema operativo.


Saludos.

Jose
Responder Con Cita
  #6 (permalink)  
Antiguo 31-05-2004, 20:40:45
Jose Antonio
 
Mensajes: n/a
Predeterminado Re: CPU al 100% usando un Thread

Sonic escribió:
> Estoy empezando a usar Threads y ya me dan problemas.
> Al ejecutar el código que os he puesto a continuacion, el uso de CPU se
> dispara al 100%. ¿Como puedo evitarlo?
>
> Necesito que el Thread esté ejecutandose continuamente mientras la
> aplicacion esté en marcha.
>
> gracias!
>
> ----------------------
>
> unit Unit1;
>
> interface
>
> uses Windows, Classes, Forms;
>
> type
> TForm1 = class(TForm)
> procedure FormCreate(Sender: TObject);
> private
> public
> end;
>
> tThread1 = class(TThread)
> private
> protected
> procedure Execute; override;
> end;
>
> var
> Form1: TForm1;
> Thread1: tThread1;
> Salir: Boolean;
>
> implementation
>
> {$R *.dfm}
>
> procedure tThread1.Execute;
> begin
> repeat until Salir;
> end;
>


Aquí estas consumiendo toda la cpu, métele un pequeño retardo de 10 ms,
te servirá, aunque esta no es la forma más elegante de hacerlo:

procedure tThread1.Execute;
begin
repeat
sleep(10);
until Salir;
end;

La forma bonita, sería hacerlo con eventos, y esa espera activa por una
espera del tipo WaitForSingleObject, del sistema operativo.


Saludos.

Jose
Responder Con Cita
  #7 (permalink)  
Antiguo 31-05-2004, 20:40:45
Jose Antonio
 
Mensajes: n/a
Predeterminado Re: CPU al 100% usando un Thread

Sonic escribió:
> Estoy empezando a usar Threads y ya me dan problemas.
> Al ejecutar el código que os he puesto a continuacion, el uso de CPU se
> dispara al 100%. ¿Como puedo evitarlo?
>
> Necesito que el Thread esté ejecutandose continuamente mientras la
> aplicacion esté en marcha.
>
> gracias!
>
> ----------------------
>
> unit Unit1;
>
> interface
>
> uses Windows, Classes, Forms;
>
> type
> TForm1 = class(TForm)
> procedure FormCreate(Sender: TObject);
> private
> public
> end;
>
> tThread1 = class(TThread)
> private
> protected
> procedure Execute; override;
> end;
>
> var
> Form1: TForm1;
> Thread1: tThread1;
> Salir: Boolean;
>
> implementation
>
> {$R *.dfm}
>
> procedure tThread1.Execute;
> begin
> repeat until Salir;
> end;
>


Aquí estas consumiendo toda la cpu, métele un pequeño retardo de 10 ms,
te servirá, aunque esta no es la forma más elegante de hacerlo:

procedure tThread1.Execute;
begin
repeat
sleep(10);
until Salir;
end;

La forma bonita, sería hacerlo con eventos, y esa espera activa por una
espera del tipo WaitForSingleObject, del sistema operativo.


Saludos.

Jose
Responder Con Cita
  #8 (permalink)  
Antiguo 01-06-2004, 07:49:57
Joaquin
 
Mensajes: n/a
Predeterminado Re: CPU al 100% usando un Thread

Has probado de esta forma?

var
hilo: TMyThread;
begin
hilo := TMyThread.Create(True); // lo creas en modo suspendido
hilo.Priority := tpIdle; // sólo trabaja cuando el proceso principal
está esperando
hilo.Resume; // ejecuta el hilo
end;

puedes cambiar tpIdle por tpLower o tpLowest para darle menor prioridad que
al programa principal.

Un saludo.

Joauqin


Responder Con Cita
 
  #9 (permalink)  
Antiguo 01-06-2004, 07:49:57
Joaquin
 
Mensajes: n/a
Predeterminado Re: CPU al 100% usando un Thread

Has probado de esta forma?

var
hilo: TMyThread;
begin
hilo := TMyThread.Create(True); // lo creas en modo suspendido
hilo.Priority := tpIdle; // sólo trabaja cuando el proceso principal
está esperando
hilo.Resume; // ejecuta el hilo
end;

puedes cambiar tpIdle por tpLower o tpLowest para darle menor prioridad que
al programa principal.

Un saludo.

Joauqin


Responder Con Cita
  #10 (permalink)  
Antiguo 01-06-2004, 07:49:57
Joaquin
 
Mensajes: n/a
Predeterminado Re: CPU al 100% usando un Thread

Has probado de esta forma?

var
hilo: TMyThread;
begin
hilo := TMyThread.Create(True); // lo creas en modo suspendido
hilo.Priority := tpIdle; // sólo trabaja cuando el proceso principal
está esperando
hilo.Resume; // ejecuta el hilo
end;

puedes cambiar tpIdle por tpLower o tpLowest para darle menor prioridad que
al programa principal.

Un saludo.

Joauqin


Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con Thread y Socket! Cesar Gazzo Huck Newsgroup microsoft.public.es.csharp 2 16-11-2007 02:05:33
Posible thread ? Jordi Newsgroup microsoft.public.es.dotnet.vb 4 14-11-2007 21:35:52
thread y subprocesos Juanma Newsgroup microsoft.public.es.desarrollo 0 28-09-2007 13:40:59
Problema con thread AiTdX100MIl Newsgroup microsoft.public.es.dotnet.framework 0 26-04-2007 17:12:02
Thread Synchronization vijufri@yahoo.com Newsgroup es.comp.lenguajes.java 0 23-07-2006 13:54:10





Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.