Page 1 of 1

Es Tdolphin thread safe ?

PostPosted: Tue Jul 23, 2013 9:21 pm
by Salvador
Hola a todos .
Tengo la duda si Tdolphin thread safe.
Estoy migrando una aplicación realizada con ADO/SQLSERVER que lleva varios años funcionando sin problemas, a TDOLPHIN/MySql.
En el funcionamiento ADO/SQLSERVER, se abre una sola conexión al inicio de la aplicación y todas las consultas que se generan desde diferentes threads (varios cientos simultáneos), se realizan sobre la misma conexión.
Con TDOLPHIN/MySql esta técnica no funciona, se debe crear una conexión para cada nuevo thread que se genera ya que la conexión del thread principal no queda visible al resto. Funciona durante un tiempo indeterminado tras el cual la aplicación se detiene con errores como:.

Error BASE/1301 : Reference to freed block
Called from HB_GCALL(0)
Called from CHECKSERVER(111) -> Thread

Error BASE/1301 : Reference to freed block
Called from INKEY(0)
Called from MAIN(83) ->Main Thread


Cualquier sugerencia será agradecida.

Re: Es Tdolphin thread safe ?

PostPosted: Wed Jul 24, 2013 12:18 am
by Armando
Salvador:

Lamento no tener respuesta a tu duda, sin embargo me ha creado una pregunta.

Por qué quieres migrar una aplicación que te ha funcionado por mucho tiempo?

Saludos

Re: Es Tdolphin thread safe ?

PostPosted: Wed Jul 24, 2013 8:14 am
by thefull
¿ Has probado de conectar a MySQL con ADO ?
Quizás te sea más sencillo , cambias la cadena de conexión y mira que las sentencias sean compatibles.

Re: Es Tdolphin thread safe ?

PostPosted: Wed Jul 24, 2013 1:46 pm
by Salvador
La empresa donde se debe instalar funciona con MySql, también pensaba que desde Dolphin si todo funcionaba correctamente, podría compilar para Linux pero.... mi gozo en un pozo.
De momento seguiré tu sugerencia y probaré con ADO/MySql a ver que tal. Tampoco estoy seguro de que el problema no venga de Mysql, tengo poca experiencia con este motor de base de datos.

Armando, Rafa, muchas gracias por vuestro interés.

Re: Es Tdolphin thread safe ?

PostPosted: Wed Jul 24, 2013 1:58 pm
by lucasdebeltran
Hola Salvador,

Puedes usar MySQL via ODBC con ADO sin ningún problema.

Además, te recomiendo que veas la clase TDataRow y las funciones que tiene Fivewin para conectar, acceder a recordsets, crear tablas y bases de datos, etc.

Es lo bueno de ADO, que permite cambiar de DB sin tocar el código.

Re: Es Tdolphin thread safe ?

PostPosted: Wed Jul 24, 2013 2:00 pm
by lucasdebeltran
Puedes conectar a MySQL así


cStr := "Driver={MySQL ODBC 3.51 Driver};Server=db4free.net;" + ;
"Database=pruebas;User=pruebas;Password=123456;Option=3;"

oCn := FW_OpenAdoConnection( cStr )



Un saludo

Re: Es Tdolphin thread safe ?

PostPosted: Thu Jul 25, 2013 9:26 am
by Salvador
Lucas, gracias por tu sugerencia.

Es una aplicación que funciona como servicio de windows, no utiliza fivewin.
Probaré con el ODBC de Mysql, aunque según tengo entendido ADO solo funciona con windows.
¿ Conoces otra posibilidad a parte de Tdolphin para conectar con Mysql compatible con LINUX. ?

Muchas gracias de nuevo.

Re: Es Tdolphin thread safe ?

PostPosted: Thu Jul 25, 2013 5:36 pm
by Daniel Garcia-Gil
Salvador

el tema me interesa un poco, pues desde hace tiempo he querido incluir procesos multi tarea en dolphin y la misma clase sea capaz de controlarlos, puedes enviarme un ejemplo simple de lo que intentas hacer para ver que opcion hay de añadirlo a la clase

mi email es: danielgarciagil@gmail.com

Re: Es Tdolphin thread safe ?

PostPosted: Sat Aug 03, 2013 8:14 pm
by Salvador
Daniel, con Ado/MySql funciona correctamente.
Espero que el código que te envié te sirva.
Quedo a la espera de que puedas incluir mejoras en Tdolphin para manejar threads, me permitiría compilar para Linux.

Muchas gracias por tu interés.

Re: Es Tdolphin thread safe ?

PostPosted: Sat Aug 03, 2013 10:34 pm
by Daniel Garcia-Gil
Salvador

de la forma que lo haces esta bien, creo que el problema podria estar por otro lado, (tratandose de los threads en linux) trata de probar el mismo codigo que usas en linux en window, el que tienes sin ADO con TDolphin