Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-05-2007
Avatar de Peterman
Peterman Peterman is offline
Miembro
 
Registrado: jun 2006
Ubicación: Almeria (España)
Posts: 50
Poder: 18
Peterman Va por buen camino
Tthread Vs. Application -> ProcessMessages();

Me gustaría que alguien me dijese ya que no puedo probarlo yo ya que no sé utilizar los hilos, si hay mucha diferencia de rendimiento entre una opción u la otra.

Mi programa necesita hacer una tarea cada segundo y he notado que el rendimiento de la aplicación ha bajado un montón. Yo utilizo Application->ProcessMessages(); para un bucle for el cual tiene que ir modificando el valor de unos 20 Edit y previamente leer estos valores de un archivo de texto...

Bueno, si alguien quiere hacer algún comentario al respecto...me interesa conocer más el tema.

Responder Con Cita
  #2  
Antiguo 29-05-2007
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
Hola.

Para que obtengas una buena y amplia información sobre el tema te recomiendo que leas unos artículos publicados en las revistas Síntesis nº 11, 12 y 13 del Grupo Albor.
__________________
Sonríe. Mañana puede ser peor.
Responder Con Cita
  #3  
Antiguo 29-05-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
La verdad es que no tiene mucho que ver lo uno con lo otro.
Application.ProcessMessages lo único que hace es que windows procese mensajes de los que hay en la cola de mensajes. Se suele utilizar por ejempo, cuando estamos dentro de un bucle, para que la aplicación no se quede "congelada" cuando estamos ejecutando un código continuamente.

Si utilizas threads, conseguirás que determinados procesos se ejecuten en un thread diferente al de la aplicación principal.
Puedes usar lo uno, lo otro, los dos o ninguno, ya que son cosas independientes.

Por lo que explicas, creo que esa tarea que haces cada segundo "tiene pinta" de que se debería ejecutar en un thread aparte.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 29-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Vamos a ver si no me lío al intentar explicarme

Una aplicación gráfica tiene lo que llamamos el bucle de mensajes, que se esta ejecutando siempre, en delphi se correspondería al método Application.Run. Este bucle esta procesando continuamente los mensajes, y cuando termina la aplicación se cierra.

Cuando al procesar uno de los mensajes (se pulsa un botón, un timer, etc ...) nos metemos en un bucle que va a tardar un poco en terminar, suele ser recomendable procesar los mensajes para que la aplicación no se congele. Pero tenemos dos inconvenientes, el primero es que los mensajes y se ejecutan dentro del nuevo bucle, es decir se para lo que se esta haciendo dentro del bucle para realizar otras tareas, por lo que si es un proceso critico no parece muy adecuado. El segundo es algo mas "conceptual", a mi no me parece adecuado que el bucle de mensajes, llame otro bucle, que a su vez procese los mensajes, no veo del todo bien esa "duplicidad".

Bueno, después de todo ese rollo , estoy de acuerdo con neftali en que tu programa tiene toda la pinta de necesitar threads. Así los eventos relacionados con los mensajes (botones, timers, etc ...) se ejecutaran por un lado, a su ritmo, y tu bucle se ejecutara por otro lado, sin interferencias, y sin tener que compartir su tiempo con nadie.
Responder Con Cita
  #5  
Antiguo 30-05-2007
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Me parece mas la comparacion entre el uso del TThread y del Application.OnIdle, quizas quisiste decir esto no lo se, para tener ma control el uso del TThread es recomendable,

Si no quieres liarte mucho con los detalles de usar el TThread existe un componente q te ayuda a usarlo sin escribir codigo, se llama TJvThread y esta en la libreria JVCL
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #6  
Antiguo 31-05-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por domingo
Cuando al procesar uno de los mensajes (se pulsa un botón, un timer, etc ...) nos metemos en un bucle que va a tardar un poco en terminar, suele ser recomendable procesar los mensajes para que la aplicación no se congele. Pero tenemos dos inconvenientes, el primero es que los mensajes y se ejecutan dentro del nuevo bucle, es decir se para lo que se esta haciendo dentro del bucle para realizar otras tareas, por lo que si es un proceso critico no parece muy adecuado. El segundo es algo mas "conceptual", a mi no me parece adecuado que el bucle de mensajes, llame otro bucle, que a su vez procese los mensajes, no veo del todo bien esa "duplicidad".
Es verdad, es un rollo. No entendi la idea.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #7  
Antiguo 31-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Una "y" se le puede escapar a cualquiera ...
Responder Con Cita
  #8  
Antiguo 31-05-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Si, pero fijate que pasé un tiempesillo en adivinarlo.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #9  
Antiguo 31-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Ohhhh

Toda la vida usa Threads... tu aplicacion aparenta ser lenta porque un solo hilo procesa todo, los Mensajes (OnIdle, Timer, etc, etc....) si usas un Thread es independiente del proceso, si este hilo tiene un loop, eso a tu aplicacion no le afecta!

Saludos
Responder Con Cita
Respuesta



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
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Application.ProcessMessages y Application.HandleMessages molinero1 Varios 13 09-05-2007 14:53:29
Como Liberar un Tthread???? AGAG4 Varios 3 25-04-2005 22:16:40
Problema con Application.ProcessMessages Coco API de Windows 0 25-02-2005 15:28:44
No funciona Application.ProcessMessages Sr_Sombrero Varios 0 24-01-2005 22:21:01
Lio con TThread diegofhernando Varios 0 20-01-2004 17:58:35


La franja horaria es GMT +2. Ahora son las 11:05:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi