The man pages for functions and interfaces indicate how well the function or interface supports threads. The ATTRIBUTES section of each man page lists the MT-Level attribute, which is set to one of the safety level categories in the following list. These categories are explained more fully in the attributes(7) man page.
If a man page does not state explicitly that a function is MT-Safe, you must assume that the function is unsafe.
This code can be called from a multithreaded application
See the NOTES sections of the man page for a description of the exceptions.
This interface is not safe to use with multithreaded applications unless the application arranges for only one thread at a time to execute within the library.
This interface is fully prepared for multithreaded access. The interface is both safe and supports some concurrency.
See the NOTES sections of the man page for a description of the exceptions.
This routine can safely be called from a signal handler. A thread that is executing an Async-Signal-Safe routine does not deadlock with itself when interrupted by a signal. See Async-Signal-Safe Functions in Oracle Solaris Threads
This interface releases locks it has held whenever Oracle Solaris fork1(2) or POSIX fork(2) is called.
Some functions have purposely not been made safe for the following reasons.
The interface made MT-Safe would have negatively affected the performance of single-threaded applications.
The library has an unsafe interface. For example, a function might return a pointer to a buffer in the stack. You can use re-entrant counterparts for some of these functions. The re-entrant function name is the original function name with "_r" appended.
For most functions with unsafe interfaces, an MT-Safe version of the routine exists. The name of the MT-Safe routine is the name of the Unsafe routine with "_r" appended. For example, the MT-Safe version of asctime() is asctime_r(). The Oracle Solaris environment supplies the following "_r" routines: