community.borland.com

Article #25326: Linking an application that uses signals with the multithreaded shared library

Problem:
What are the issues with linking an application that uses signals
 with the InterBase multithreaded shared library, gdsmt?

Solution:
This is a Solaris specific issue

InterBase v4.0
--------------------------
Use of the InterBase v4.0 gdsmt library with applications that use
signals is not supported on any version of Solaris.  There are too
many Solaris operating system bugs relating to the use of threads
and signals to allow for a stable application to be built using our 
gdsmt library.  For applications that require the use of signals the 
only available alternative on InterBase v4.0 is the pipe library. 
However, there is a significant performance issue with using the 
pipe library.  The pipe library is known to be much slower than the
shared library.

The readme file for the InterBase SO-V4.0N1 kit recommends:

    "Do not write multi-threaded applications that access InterBase.  
     More to the point, do not use UNIX signals for any purpose in 
     a multi-threaded application on Solaris."

InterBase v5.0
--------------------------
InterBase v5 is a single process/multithreaded server that does NOT make
use of signals.  There is a shared library that applications can link with to get
superior performance.  Applications that use signals can link with the shared library,
because InterBase v5.0 doesn't need to use signals to communicate between 
attachments.  Since it is a single process, the different attachments can 
communicate across threads.

In fact, the pipe library has been retired for v5, because it is no longer needed.  
The pipe library was specifically introduced to get around signal issues that 
were present on earlier versions of InterBase.



Last Modified: 17-OCT-00