Ver Mensaje Individual
  #7  
Antiguo 22-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
jachguate Va por buen camino
Hola.

Como te he comentado, nunca intenté hacer una conexión multi-hilo a interbase, en ninguna versión.

Creo que para efectos de pruebas, y para comproabar que el problema no está en dbExpress, podes valerte de realizar exactamente la misma prueba, pero sobre firebird, lo que no implica mucho mas que, hacer un backup de la base de datos, desinstalar interbase, instalar firebird con soporte para "legacy applications", restaurar el backup y realizar la prueba.

Cita:
Empezado por rolandoj Ver Mensaje
Una investigación de ese error en Internet indica varias causas; pero, en este caso, la más probable es un problema con el software cliente de Interbase, que según encontré en algunas notas muy antiguas, no es hilo seguro en versiones anteriores a la 7.

Me queda una gran duda:

dbExpress usa su propio driver cliente "dbxint30.dll" para conectarse, y más nada. Puesto que este es todo el cliente y es la última versión, yo suponía que era un hilo seguro, y por eso, inicialmente no lo había verificado. No encuentro lógico que a estas alturas de la historia no lo sea.
El driver de dbExpress (dbxInt30.dll) no hará mas que conectarse al cliente de interbase (gds32.dll). Por tanto, para que funcione, es necesario que ambos sean thread-safe.

Cita:
Empezado por rolandoj Ver Mensaje
Una posible explicación es que falle al tratarse de una conexión a una versión antigua de la base de datos; pero no debería haber mucha diferencia entre ese manejo para una versión anterior y la de la versión actual, por lo que no me es muy convincente que excluyeran esa capacidad.
¡Claro que puede haberla!
Quizás el equipo de desarrollo de interbase no se planteó la necesidad de soportar multiples conexiones concurrentes desde una misma aplicación y por tanto desde una única instancia del cliente, hasta muy tarde, y no lograron completar el trabajo hasta después de la v. 6.0.

Cita:
Empezado por rolandoj Ver Mensaje
Investigué en Internet y no pude encontrar nada que afirmara, o rechazara, el hecho de que ese driver sea un hilo seguro. En cambio, encontré una nota de Agosto del 2007 en que alguién expresaba dudas en que la creación de la conexión dbExpress fuera hilo seguro, y varias notas confirmando que mi metodología de acceso (crear una nueva conexión para cada hilo) es la correcta con dbExpress.
No uso dbExpress, pero francamente dudo que a estas alturas, como motor, no tuviera esa capacidad. Otro asunto son los drivers, pero como ya te dije antes, no está muy difícil comprobarlo.

Finalmente, puedo garantizar que el cliente de firebird 1.5 y superiores se desempeñan muy bien en entornos multihilos. En ocasiones esporádicas, las aplicaciones que usan esa característica han presentado algun problema que de primera mano atribuyo al cliente, pero que no he logrado comprobar.

En mi caso, las conexiones las hago usando IBX como capa de conexión.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita