Threads are key technology in the further development of Linux and Unix. The programming model facilitated with the use of threads benefits both client and server programs. Programs like Netscape Navigator are a testimony to the power of multithreaded programming using POSIX threads. Threads provide a more natural programming model for application with concurrency requirements.


What's New

Pthreads is incorporated into CAE Specification System Interfaces & Headers Issue 5 (XSH5), part of the Single UNIX Specification, Version 2. XSH5 adds the following extensions:
  • the ability to set and get level of thread concurrency, this is an efficiency issue which can lead to better program performance.
  • implements reader/writer locks, allows simultaneous read-only access to data, which is very useful.
  • extended mutex attribute types.
  • extended mutex locking.
  • extended scheduling policies.
  • set guard size for stacks.

Description

The family consists of three subgroups:
  • "Real" POSIX threads, based on the IEEE POSIX 1003.1c-1995 (also known as the ISO/IEC 9945-1:1996) standard, part of the ANSI/IEEE 1003.1, 1996 edition, standard. POSIX implementations are, not surprisingly, the emerging standard on Unix systems.
    • POSIX threads are usually referred to as Pthreads.
    • You will often see POSIX threads referred to as POSIX.1c threads, since 1003.1c is the section of the POSIX standard that deals with threads.
    • You may also see references to draft 10 of POSIX.1c, which became the standard.
  • DCE threads are based on draft 4 (an early draft) of the POSIX threads standard (which was originally named 1003.4a, and became 1003.1c upon standardisation). You may find these on some Unix implementations.
  • Unix International (UI) threads, also known as Solaris threads, are based on the Unix International threads standard (a close relative of the POSIX standard). The only major Unix variants that support UI threads are Solaris 2, from Sun, and UnixWare 2, from SCO.

Both DCE and UI threads are fairly compatible with the POSIX threads standard, although converting from either to "real" POSIX threads will require a moderate amount of work.

Those few tardy Unix vendors who do not yet ship POSIX threads implementations are expected to do so "real soon now". If you are developing multithreaded applications from scratch on Unix, you would do well to use POSIX threads.

When To Use POSIX Threads

If there is a need for a high degree of concurrency in a process, threads provide a natural model for application architecture
Check the comp.programming.threads newsgroup FAQ or it might be here also.
Need more here . . .

Implementations of POSIX Threads

Programming POSIX Threads

Books On POSIX Threads

Many good books are available on POSIX Threads.
Check out the books and tutorials page for references and descriptions.

The POSIX Threads Standard

To order ISO/IEC standard 9945-1:1996, which is also known as ANSI/IEEE POSIX 1003.1-1995 (and includes 1003.1c, the part that deals with threads), you can call +1-908-981-1393. The document reference number in the IEEE publications catalogue is SH 94352-NYF, and the price to US customers is $120 (shipping overseas costs extra).

Unless you are implementing a POSIX threads package, you should not ever need to look at the POSIX threads standard. It is the last place you should look if you wish to learn about threads!

Neither IEEE nor ISO makes standards available for free; please do not ask whether the POSIX threads standard is available on the Web. It isn't.

Freely-available POSIX Threads Packages


If you have comments or suggestions, email me at sdybiec@humanfactor.com