Subject Re: [IB-Architect] Thread-safety of gds32.dll
Author Dmitry Kuzmenko
Hello, Helen!

Helen Borrie wrote:

> >It was NEVER thread-safe on a local connection.
>
> That much was known...I'm trying to get to the bottom of the cause...is the
> shared memory conflict between client library and server the only
> issue? Why should it be so? Do you think it was deliberately made so to
> prevent people from developing middleware using LIBS?

Don't know. I've got this knowledge from Dmitri Smirnov's article (in interbase@...)
several months ago. He stated that gds32.dll is not threadsafe at all.
Also he described local connections mechanism. There were no explanations
about LIBS issues. I think LIBS was created before MIDAS, and nobody in Borland
ever thought about using LIBS with Midas.

> >And seems it
> >executes queries serially for different processes.
>
> I'm not sure exactly what you are saying here. (a) all queries within a
> single process are executed serially? or in some processes it executes all
> queries serially and in some processes it doesn't? Do you mean it queues
> up queries and won't execute one until the current one is finished?

I'm not sure, it must be tested. I remember that in some IB version
all queries in different processes were executing serially, i.e. next query
won't execute until current is finished.

> >uses shared memory for IPC between gds32.dll and interbase.exe.
>
> Is there any way one can observe/test that?

? This is the FAQ (at list in Russia) that using IB with CGI, ISAPI, Perl, Baikonur
or other Web technology connection must be specified as localhost or servername,
not as local (direct database path without specifying server name and protocol).
only localhost:c:\dir\data.gdb or servername:c:\dir\data.gdb will work and
process parallel queries.
Right two days ago one man asked me about serial query execution with MIDAS
applications. He missed in one app and specified local connection instead localhost:c:\dir...

> Do you know whether it affects all platforms, or just Windows?

I know that there is no local connection in Unix. You can't connect to database
without specifying localhost or servername. So local connections are Windows-specific.

> Is just a Classic problem or does it affect SS as well?

I think there is no difference between classic and ss for this issue.

--
Dmitry Kuzmenko, Epsylon Technologies.