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 06-04-2005
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Timers

Creo que la pregunta que voy a hacer para muchos puede parecer demasiado tonta, pero bue... Mi duda es la siguiente. El uso de un timer, quita muchos recursos de sistema???. Y si uso por ejemplo 10 timers en una aplicacion, se va a volver muy pesada???.
Desde ya muchisimas Gracias!
Responder Con Cita
  #2  
Antiguo 06-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Como es lógico el hecho de que este todo el tiempo pendiente de los timer le resta recursos, pero si es un programa que solamente tiene esa misión, escuchar puertos, esperar ficheros..... no hay ningún problema, de lo contrario, no hay mejor cosa que hacer una prueba de rendimiento.

¿Se puede saber que piensas hacer con 10 timers?

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 06-04-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por marcoszorrilla
¿Se puede saber que piensas hacer con 10 timers?
Esto mismo me pregunto.

Si se desea monitorear los eventos E1, E2, E3,... con periodicidades P1, P2, P3..., tómese el máximo común divisor D = mcd(P1, P2, P3, ...) de las periodicidades y dispóngase un único cronómetro con intervalo igual a P.

Ajústese una variable N que registre el número de incidencias de la ocurrencia del cronómetro.

En cada ciclo del cronómetro tómese el residuo Ri que deja N*D al dividirse por Pi (Ri = N*D mod Pi).

Si Ri es cero significará que el evento Ei ha de señalarse como transcurrido.



// Saludos
Responder Con Cita
  #4  
Antiguo 07-04-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Roman: ... se supone que eso lo has sacado de tus apuntes de la guardería en la NASA, donde obviamente eras el alumno más aventajado.

Bromas aparte, chapó !!
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 07-04-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Qué va hombre!

Faltará además ver si funciona (por algo el smiley no tan sonriente al final del mensaje), más que nada por la imprecisión de un timer.

// Saludos
Responder Con Cita
  #6  
Antiguo 07-04-2005
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile Thread para iteraciones temporizadas

¡Buen día a todos!

He leído en diversos lugares (y lo he comprobado) que por lo general es preferible usar un hilo (thread) de ejecución alterno en lugar de un temporizador (timer), cuando se busca una buena precisión de tiempo (hasta de milisegundos) para llevar a cabo la acción temporizada.

Cuando se trata de crear un hilo de ejecución alterno, la ayuda de Delphi aconseja una forma básica de hacerlo, la cual consiste en crear una nueva clase de objeto derivada de TThread, redefiniendo su método Execute para incluir en éste el código que deseamos se ejecute dentro del hilo.

Sin embargo, algunos desarrolladores han expresado su incomodidad por seguir este procedimiento, argumentando que es demasiado código el que hay que escribir sólo para hacer que el programa corra otro hilo en el fondo. Esto depende de la percepción que cada programador tiene en cada circunstancia específica de su trabajo (puede ser un proyecto de entrega urgente, una aplicación con varios hilos alternos, etc.).

Considerando todo lo anterior, hace tiempo me di a la tarea de crear una clase derivada de TThread, la cual llamé TghThread. Tiene la ventaja de que al instanciar un objeto TghThread se pueden indicar como parámetros:

1. El nombre de un método que el hilo deberá ejecutar repetitivamente.
2. El intervalo de tiempo en milisegundos para que, a manera de temporizador preciso, dicho método se ejecute cada cierto tiempo.

Ejemplo:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IGHTareas;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    HiloReloj :TghThread;  { Hilo de Reloj }
    Procedure Reloj;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

Procedure TForm1.Reloj;
Begin
  Label1.Caption := FormatDateTime ('hh:nn:ss.zzz', Time ());
End;

{ Manejadores de eventos }

procedure TForm1.FormCreate(Sender: TObject);
begin
  { Establecer el método Reloj como procedimiento a ejecutarse cada 20
    milisegundos en un hilo alterno }
  HiloReloj := TghThread.Crear (Reloj, 20);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  HiloReloj.Free;
end;

end.
Como puede observarse, con TghThread no es necesario crear una nueva clase de objeto para establecer un hilo adicional en nuestra aplicación. Puede usarse fácilmente como un temporizador de alta precisión, colocando el método a ejecutar en alguna forma o módulo de datos de nuestro programa. Obviamente este ejemplo de reloj en pantalla, como tal, no tiene mucha aplicación práctica que digamos, pero nos ilustra de manera sencilla lo que podríamos hacer cuando queramos que nuestra aplicación ejecute iterativamente y con alta frecuencia alguna tarea en particular.

TghThread es freeware, incluye los fuentes y forma parte de la biblioteca Interfaz GH para Delphi 7. También pueden solicitármelo directamente, con toda confianza.

Un abrazo a todos.

Al González.
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


La franja horaria es GMT +2. Ahora son las 13:02:42.


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