Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Hilos y TTimer... (https://www.clubdelphi.com/foros/showthread.php?t=20045)

Elfoscuro 04-04-2005 19:25:10

Hilos y TTimer...
 
Hola...

¿Podríais indicarme alguna página que explique clarito "para tontos" y en castellano el empleo de hilos? Es que necesito que un proceso se ejecute con exactitud cada 320 ms, y el TTimer va como le peta. De momento lo he medio solucionado con GetTickCount, pero si se pudiera hacer de mejor manera, por lo menos aprendería algo...

Saludos del elfo

Alfredo 07-04-2005 15:33:44

tengo un pequeño manual que te puede servir.. si lo quieres te lo mando al tu correo, solo avisa.

Elfoscuro 07-04-2005 15:52:49

Si gracias, me interesa...

Si puedes enviarmelo a:

apachusque (cambiar esto por una arroba) msn (punto) com

A ver si puedo hacer mi programa más regular (y me entero de que leches son los hilos).

Un saludo

Investment 07-04-2005 15:56:09

Que es lo que te falla exactamente en el Timer?

Y,

Que es lo que tienes que ejecutar cada 320ms?

Elfoscuro 07-04-2005 16:11:32

El Timer es inexacto. Es decir, tiene una prioridad baja en Windows, por lo que si en el momento que tiene que ejecutar el código asociado a él, windows está haciendo alguna parida, el Timer se espera, con lo que no consigo una temporización perfecta. Si lanzo la aplicación y me quedo mirando la pantalla, sin hacer nada más, ya veo como falla (y eso que es cada 320 ms ;-)). No es regular. Y si tengo a Windows ocupado de fondo, ya ni te cuento la irregularidad el joio TTimer.

Por eso me comentaron que era mejor hacerlo con hilos, porque son bastante más estables. Parece ser que Windows les da más prioridad. Al fin y al cabo, es un proceso "en segundo plano", es decir, independiente del usuario. La única interacción con el usuario es visual.

Y en cuanto a lo que necesito ejecutar, es algo un poco raro, dado los tiempos que corren. Todo se remonta a mediados de los 80, cuando me compré mi Spectrum... bueno, no me enrollo. Es un visor de pantallas de presentación del ZX Spectrum (ordenador de 8 bits de principios de los 80 para los que no lo conozcan). Estas pantallas tenían algunas partes con flash (o parpadeo). Este flash cambiaba su estado cada 320 ms.

Para implementar esto, cargo la pantalla en dos TBitmaps, uno con cada versión de la pantalla, con y sin flash, y los cargo alternativamente cada 320 ms en un TImage.

Por eso se nota mucho. Si el flash va a trompicones, no queda nada bien. Y ya ni te cuento si lo hago con dos pantallas, en dos TImages. Solo va el flash en uno de ellos. El otro (o los otros) TImages, no van ni a la de tres.

Imagino que con hilos irán todos, y sincronizados. Al fin y al cabo, cargar la pantalla me cuesta unos 35ms desde disco, dibujado incluido, por lo que imagino que el traspaso entre canvas me costará bastante menos.

Saludos del elfo

Alfredo 07-04-2005 16:59:55

Enviado...
espero que te ayude....

[off topic] Me gustaria saber como se puede colocar es articulo en algun lugar de descarga del foro, asi se pudieran beneficiar todos los que quisieran...

Alfredo 07-04-2005 17:05:06

+++
 
Tienes una explicacion y ejemplos interesantes en el area de trucos: http://www.clubdelphi.com/trucos.php.

Busca por Hilo.

:)

Al González 07-04-2005 21:39:47

¡Buen día a todos!

Elfo:

Creo que te puede servir la respuesta que di en
http://www.clubdelphi.com/foros/showthread.php?t=20123. Se trata de un componente (en realidad una clase de objeto) que se encarga del trabajo difícil.

Saludos.

Al González. :)

Elfoscuro 08-04-2005 10:18:07

Gracias...

Lo probaré a ver que tal se me da ;-)

Saludos del elfo


La franja horaria es GMT +2. Ahora son las 17:57:17.

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