Subject | Application freeze due parallel connection attempt |
---|---|
Author | Tessien |
Post date | 2003-02-15T14:01:18Z |
Hi.
I have an application, which creates multiple threads and each of them
tries to connect to Firebird DB and do something. I work with DB
through ODBC, but I guess the problem wont be in ODBC drivers. What
have I found out so far:
- If I create multiple connections in one thread, i.e. serially, it
works OK
- If I try to create connections in multiple threads, the program
enters ODBC connect function, but never leaves
- If I tried to do a synchronization on creating the connection, the
first thread created it succesfully, but all other threads froze in
it. Also, the first thread was stuck in first ODCB function it called
after some other thread froze in connect function
- If I do synchronization on the whole function (i.e. from creating
the connection, to freeing it) it works, but that's the same as if I
do it in one thread and that's not what I would like to
- I tried it in Firebird 1.02 (latest release) and Firebird 1.5 beta2,
build 2284 (also the latest so far)
- all this problems are ONLY if I connect to server as local server.
When connection over TCP/IP or NetBeui, it works fine (but is slower)
- it does the same with XTG ODBC driver and Firebird ODBC driver (only
two free ODBC drivers for Firebird I could find)
From the last two points I think, it is not a problem in ODBC driver
itself (it would seem strange to me, that two different ODBC drivers
woulds share the same error).
If anybody could help, I would be very grateful.
Regards,
Martin Rohla
tessien@...
I have an application, which creates multiple threads and each of them
tries to connect to Firebird DB and do something. I work with DB
through ODBC, but I guess the problem wont be in ODBC drivers. What
have I found out so far:
- If I create multiple connections in one thread, i.e. serially, it
works OK
- If I try to create connections in multiple threads, the program
enters ODBC connect function, but never leaves
- If I tried to do a synchronization on creating the connection, the
first thread created it succesfully, but all other threads froze in
it. Also, the first thread was stuck in first ODCB function it called
after some other thread froze in connect function
- If I do synchronization on the whole function (i.e. from creating
the connection, to freeing it) it works, but that's the same as if I
do it in one thread and that's not what I would like to
- I tried it in Firebird 1.02 (latest release) and Firebird 1.5 beta2,
build 2284 (also the latest so far)
- all this problems are ONLY if I connect to server as local server.
When connection over TCP/IP or NetBeui, it works fine (but is slower)
- it does the same with XTG ODBC driver and Firebird ODBC driver (only
two free ODBC drivers for Firebird I could find)
From the last two points I think, it is not a problem in ODBC driver
itself (it would seem strange to me, that two different ODBC drivers
woulds share the same error).
If anybody could help, I would be very grateful.
Regards,
Martin Rohla
tessien@...