FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
||||
|
||||
El problema de fondo es que la estructuración que tienes no es la ideal para multihilos. La mayoría de los lenguajes no ayudan tampoco, incluido Delphi.
Yo haría lo siguiente: - Anula por ahora lo de multihilos - Convierte el código en una maquina de estados. Asegurate de PASAR DATOS(valores) y no POINTERS. En donde haces una transferencia, clona información. Una vez tengas limpio el código y andando lo pones y te sugerimos como estructúralos para hilos...
__________________
El malabarista. |
#22
|
|||
|
|||
Conexion no es threadsafe
Recuerda una conexión a una base de datos no es Threadsafe. Es posible que estás a mitad de una consulta y entre otro hilo (o el principal) y se cruce. Al servidor llegaría algo como "SELECT * FROM UPDATE ...".
Eso no solo pasaría con ODBC, pasaría con cualquiera. Los servidores son threadsafe por que cada conexión es un hilo, pero no deberías tener en la misma conexión varios hilos al menos que trabajes con sincronización o locks (lo cual puede ser frustrante). A otro nivel, a mi me ha tocado trabajar con cientos de hilos y es espetacular cuando funciona bien y de forma eficiente. No tienes porque crear un hilo, consultar y destruirlo, lo puedes volver a utilizar, lo creas en pausa con todos sus conexiones y dataset, cuando lo requieras start, cuando cierres tu aplicación liberas los hilos (previamente detenidos). La otra forma es que tengas un ciclo dentro del hilo, y al cerrar tu app, terminas previamente los hilos. Si optas por algo de esto, no olvides, todo hilo debe ejecutarse al menos una vez, caso contrario dejas memoria en mal estado. |
#23
|
||||
|
||||
Cita:
Has creado los Datasets usando como Owner, el objeto Application, por lo tanto deberías revisar ese comportamiento.
__________________
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. |
#24
|
|||
|
|||
Solución.
Bueno definitivamente el tema se ha solucionado (al menos en las últimas 24 horas) aumentando el tiempo de las conexiones de 20 a 60 segundos, por lo que al parecer el controlador ODBC requiere de tiempo quizá para liberar recursos. aún no he puesto la pregunta en la web de soporte del proveedor, pero casi seguro que por ahí anda el tema. Gracias a todos por sus recomendaciones y opiniones. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ejecución bloqueada. Hilos de ejecución | muli | Desarrollo en Delphi para Android | 10 | 28-11-2016 15:16:03 |
Crear Hilos de Ejecución con TIdFTP | JAI_ME | Varios | 12 | 13-12-2013 18:28:39 |
Ayuda con Hilos de ejecucion | kurono | Varios | 19 | 15-01-2011 15:36:40 |
Problema con hilos de ejecucion | gueritox | OOP | 1 | 14-08-2010 15:26:06 |
Hilos de ejecucion | el toluca | Varios | 2 | 29-06-2004 22:59:04 |
|