On Tue, Jun 29, 2010 at 06:19:06PM -0700, Sep Ng wrote:

> How can I tell which ones are thread safe?  This sounds like something
> I will need to look into before I start writing code.

*All* AOLserver modules must be thread safe.  If they have any parts
that are not, then that's clearly a bug which their developer
overlooked, and needs to be fixed.

Keep in mind however, that it's entirely possible for a module to call
some external C library which happens to be completely thread-safe on
one operating system, but horribly unsafe another.  All part of the
"fun" of cross-platform programming...

If you manage to find a list somewhere of what MS Windows library
calls are or are not thread-safe, then you could use various tools to
find ALL the calls in your AOLserver binaries, and compare the two
lists to see if AOLserver seems to be calling anything unsafe.

Unfortunately very few operating systems provide any such clear,
consolidated documentation of what function calls are thread-safe
vs. not.  You're lucky if the docs on each individual function call
even tell you, and of course as Gustaf mentioned, occasionally those
docs are wrong.

My general impression though, is that historically MS Windows has
tended to have a lot FEWER non-thread-safe library calls in use than
Unix.  This is probably because Win32 was first written in an era when
threads were very popular, while most versions of Unix have roots
stretching back well before then.

(Supposedly that's also why the multi-process support in Win32 has
always been said to be lousy, but the success of multi-process Google
Chrome on Win32 suggest that those problems have either been fixed, or
can be effectively worked around.)

> > I prefer libthread, since all such threads run in an event loop.

> I don't think I've ever heard of this on Aolserver... I always thought
> Aolserver's threads would eventually end up using the tcl+libthread
> but it seems that there's a real difference in this.

The Tcl Threads Extension's libthread was written AFTER AOLserver; in
fact AOLserver is what inspired Zoran to write libthread in the first
place.  Generally speaking, libthread is backwards compatible with
AOLserver, but also includes some newer stuff that AOLserver does not.

libthread is designed so that you can easily use it from inside
AOLserver, including as a drop-in replacement for AOLserver's older
nsv_* code.  It should be technically feasible to change AOLserver to
use libthread directly, but no one has done the work.

(And anyway, none of that has much of anything to do with your
debugging problem.)

> So typically the config file has no connection whatsoever to the
> threads of aolserver and that it only pertains to the connection
> threads, or am I confusing this even further?

Your "the threads of aolserver" terminology above is certainly
confused.  A "connection thread" is one of the various flavors of
threads used in AOLserver.

-- 
Andrew Piskorski <[email protected]>
http://www.piskorski.com/


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to 
<[email protected]> with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: 
field of your email blank.

Reply via email to