Go to main content

Multithreaded Programming Guide

Exit Print View

Updated: March 2019
 
 

Some Basic Guidelines for Threaded Code

  • Know what you are importing and know whether it is safe.

    A threaded program cannot arbitrarily enter nonthreaded code.

  • Threaded code can safely refer to unsafe code only from the initial thread.

    References to unsafe code in this way ensures that the static storage associated with the initial thread is used only by that thread.

  • When making a library safe for multithreaded use, do not thread global process operations.

    Do not change global operations, or actions with global side effects, to behave in a threaded manner. For example, if file I/O is changed to per-thread operation, threads cannot cooperate in accessing files.

    For thread-specific behavior, or thread cognizant behavior, use thread facilities. For example, when the termination of main() should terminate only the thread that is exiting main().

          pthread_exit();
           /*NOTREACHED*/
  • Oracle-supplied libraries are assumed to be unsafe unless explicitly documented as safe.

    If a reference manual entry does not explicitly state that an interface is MT-Safe, you should assume that the interface is unsafe.

  • Use compilation flags to manage binary incompatible source changes. See Compiling and Debugging for complete instructions.

  • The –mt option enables multithreading.


Note -  Starting with Oracle Solaris 10, you need not explicitly link the multithreaded code against the libthread and libpthread libraries. These libraries exist for the benefit of the older programs, but are not otherwise necessary.