Copyright Digital Equipment Corp. All rights reserved.

Description

   This routine changes the detachstate attribute in the thread
   attributes object specified by the attr argument. The detachstate
   attribute specifies whether the thread created using the
   specified thread attributes object is created in a detached state
   or not. A value of PTHREAD_CREATE_JOINABLE indicates the thread
   is not detached, and a value of PTHREAD_CREATE_DETACHED indicates
   the thread is detached. PTHREAD_CREATE_JOINABLE is the default
   value.

   Your program cannot use the thread handle (the value of type
   pthread_t returned by the pthread_create() routine) of a detached
   thread because the thread might terminate asynchronously, and a
   detached thread ID is not valid after termination. In particular,
   it is an error to attempt to detach or join with a detached
   thread.

   When a thread that has not been detached completes execution,
   the Threads Library retains the state of that thread to allow
   another thread to join with it. If the thread is detached
   before it completes execution, the Threads Library is free to
   immediately reclaim the thread's storage and resources. Failing
   to detach threads that have completed execution can result in
   wasting resources, so threads should be detached as soon as
   the program is done with them. If there is no need to use the
   thread's handle after creation, such as to join with it, create
   the thread initially detached.