![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() Hola, tengo un pequeño problema, siento que es muy sencillo, pero me gustaria saber si alguien del foro lo ha intentado.
Crear dos Threads en la misma aplicacion, cada uno con una Query y Transaction, y una sola conexion a una base de datos o tambien sucede con dos conexiones una para cada Transaction y Query, en cada Query colocar cualuier consulta por sencilla que sea. Despues Ejecutar primero uno de los Threads, determinar que realmente esta consultando sin problemas, y Despues por medio de un boton por ejemplo Arrancar el otro. La idea es que cada Thread este ejecutando una consulta al mismo tiempo. El resulatado es que Cuando el segundo thread arranca y utilizar cualquiera de los componentes de Ibx por ejemplo StartTransaction la aplicacion se bloquea inmediatamente..... ![]() o no lo es, ya he intentado con todo, pero no lo he logrado. Este prolema tiene un reto mas, esto tendria que hacerse sin usar Semaforos o Secciones Criticas la idea es que ambas consultas se esten ejecutando al mismo tiempo, sin que una tenga que esperar a la otra... Si con Ibx no es posible existe algun otro componente que sea capaz de hacerlo , ya lo intente con Ibo y el resultado es el mismo... Por su amable ayuda muchas gracias He utilizado para estas pruebas Borland C++ 6.0 , Firebird-1.5.3.4870 y Ibx 6.08 |
#2
|
|||
|
|||
Como creas los query, porque por cada thread tenes que crear la consulta, a ver si me explico mejor, tenes que crear dentro del thread el TQUERY o componente que uses con su correspondiente transaction.
Espero que me entiendas Suerte
__________________
Suerte Alejandro |
#3
|
|||
|
|||
Cita:
El de Conexion a la Base de Datos ( Cada Thread con su conexion), la Transaccion, y el Query. En la Creacion: Código:
IBDatabase =new TIBDatabase(NULL); IBDatabase->DatabaseName="DBX.FBD"; IBDatabase->Params->Add("user_name=SYSDBA"); IBDatabase->Params->Add("password=masterkey"); IBDatabase->LoginPrompt=false; IBTransaction = new TIBTransaction(NULL); IBTransaction->DefaultDatabase = IBDatabase; IBTransaction->Params->Add("write"); IBTransaction->Params->Add("consistency"); IBQuery = new TIBQuery(NULL); IBQuery->Transaction = IBTransaction; IBQuery->Database = IBDatabase; IBQuery->SQL->Add("select * from TableX"); Código:
void __fastcall TTest::Execute() { IBDatabase->Connected=true; while(!Terminated) { try{ IBTransaction->StartTransaction(); IBQuery->Open(); IBTransaction->Commit(); Sleep(1); } catch (Exception &exception) { } } } |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Firebird AND Threads | Abel Garcia | Firebird e Interbase | 21 | 19-03-2008 05:07:21 |
Bloqueo de Registros en FireBird | DavidR | Firebird e Interbase | 6 | 18-05-2007 17:27:45 |
Threads zombies | Archer | Varios | 1 | 25-09-2006 19:19:38 |
uso del WaitFor() en Threads | chalitox | Varios | 7 | 06-09-2006 23:34:56 |
Threads y transacciones | anduj | Conexión con bases de datos | 5 | 12-07-2005 20:31:40 |
![]() |
|