![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| 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. |
| | ||||
| ||||
| |
| |||
| 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 |
| |||
| 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 |
| |||
| 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 |
| |||
| 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 |
| |||
| 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 |
| |||
| 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 |
| |||
| 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 |
| |
| |
| |||
| 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 |
| |||
| 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 |
![]() |
| Herramientas | |
| Desplegado | |
| |
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 |