This article is from the Threads Programming FAQ, by Bryan O'Sullivan email@example.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
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.