"Richard Seaman, Jr." wrote:
> 
> On Fri, Jan 22, 1999 at 09:49:23AM -0800, Kurt D. Zeilenga wrote:
> > "Richard Seaman, Jr." wrote:
> > > _THREAD_SAFE is only used in stdio.h.  Looking at what's there, it could
> > > be rewritten to eliminate _THREAD_SAFE entirely, at a (very slight)
> > > performance penalty.  You'd have to check __isthreaded (could be done
> > > once, instead of twice, as in the code now) each time you call one
> > > of the functions defined within the _THREAD_SAFE switch.  All
> > > _THREAD_SAFE does is let you avoid checking __isthreaded when you're
> > > not threaded.
> >
> > So, if I want to produce a library which can be safely used by both
> > threaded and non-threaded applications I should NOT define -D_THREAD_SAFE
> > such that __isthreaded is always checked by the library.
> 
> I guess I was a little unclear.
> 
> 1) I think you would have to rewrite a little bit of the header to
> use the __isthreaded test on a couple of more functions.
> 
> 2) If you always define -D_THREAD_SAFE, __isthreaded will be
> checked whether you're threaded or not.

I would think that most third party libraries (from Ports) do
not compile with -D_THREAD_SAFE.  As such, __isthreaded won't
be checked and the library cannot be safely used in a threaded
environment.

> You could also just eliminate _THREAD_SAFE entirely by letting
> __isthreaded get checked on each relevant call.

I would much prefer this.  Then third party libraries compiled
without -D_THREAD_SAFE can be used in threaded environments
(though they might require external synchronization).

Kurt

To Unsubscribe: send mail to majord...@freebsd.org
with "unsubscribe freebsd-current" in the body of the message

Reply via email to