FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Seccion crítica
Buenas a todos
Deseo realizar un proceso de clasificación de resultados y se trata de un proceso complejo que puede tardar unos 20oms que se repite con cada entrada de datos, y este proceso se puede ejecutar desde distintos puntos 1. cada entrada de mensaje 2. presionando un botón y realiza la clasificacion 3. un timer que se ejecuta cada 10 segundo s que realiza el mismo proceso. La primera vez se realiza por cada entrada y los otros dos se realizan por si falla algo del proceso 1 o se cambio algo directamente en bbdd. La idea es crear un seccion critica que encapsule al procedimiento de clasificacion para que se ejecute en orden y nada pueda entrar en ella miestrtas se esta realizando, si se reciben 10 mensajes a la vez se deben ejecutar en orden y eserar cada uno a que termine el anterior. la idea es : Bloquear (Lock) realiza Proceso -- aqui se hacen todas las acciones (cambiar array, consultar bbdd, escribir bbdd, escribir stringgrid Libera (Release) Por ejemplo llegan 3 mensajes, y se presiona un vez el botón de clasificar y luego otros dos mensajes (en 100 ms) el resultado deseado es Mensaje1 bloquea Proceso Clasifica Mensaje1 libera Mensaje2 bloquea Proceso Clasifica Mensaje2 libera Mensaje3 bloquea Proceso Clasifica Mensaje3 libera Boton Clasifica bloquea Proceso Clasifica Boton Clasifica libera Mensaje4 bloquea Proceso Clasifica Mensaje4 libera Mensaje5 bloquea Proceso Clasifica Mensaje5 libera He usado sin creacion de hilos (no deseo usar hilos si puede ser). criticalsection, mutex, rtlcriticalsecrtion , pero o no los entindo bien o se deben usar siempre con hilos. tener en cuenta que el proceso es largo y tiene muchas cosas a hacer pero lo que quiero es garantizar que dentro de la region critica tan sólo se está ejecutando un proceso. Podrías indicarme algún tipo de ayuda. Gracias a todos por vuestra colaboracion |
#2
|
||||
|
||||
Crea una simple cola (una lista FIFO). Que llegan peticiones... pues a la cola, que esperen, porque el funcionari solamente puede atender de uno en uno
|
#3
|
|||
|
|||
algún ejemplo en delphi de utilizacion de pilas (FiFO)
Crea, Apila, deapila y Vacia Pila. tengo un indytcp server que recibe los mensajes, en el evento execute debería realizar introducir en pila (Apila), Después realizar un procedimiento que deaplila. ¿como me aconsejáis con un timer? o ¿hay algún componente para manejo de pilas en delphi?. Gracias y saludos. |
#4
|
||||
|
||||
No, no, nada de timer. Cuando termina con uno, empieza con otro, como en la vida real, en las colas.
Puedes usar un simple stringlist para añadir tareas a la cola y eliminarlas según van acabando y que pase a la siguiente que toque. |
#5
|
||||
|
||||
Hola rabata2001.
Delphi implementa la clase TQueue para el manejo de colas y TStack para el manejo de pilas. Un ejemplo (más que básico) que utiliza ambas:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Mozilla critica el nuevo test de seguridad para navegadores de Microsoft | marcoszorrilla | Noticias | 1 | 16-10-2011 15:53:19 |
Sección trabajo | DDiez | Varios | 4 | 30-11-2007 19:28:21 |
Vulnerabilidad crítica en Firefox | gmontes | Noticias | 1 | 13-07-2007 22:18:35 |
|