This article is from the Threads Programming FAQ, by Bryan O'Sullivan bos@serpentine.com with numerous contributions by others.
If your system provides threads, it will probably provide a set of
thread-safe variants of standard C library routines. A small number of
these are mandated by the POSIX standard, and many Unix vendors
provide their own useful supersets, including functions such as
gethostbyname_r().
Unfortunately, the supersets that different vendors support do not
necessarily overlap, so you can only "safely" use the standard
POSIX-mandated functions. The thread-safe routines are conceptually
"cleaner" than their stateful counterparts, though, so it is good
practice to use them wherever and whenever you can.
 
Continue to: