Provided by: glibc-doc_2.9-0ubuntu6_all


        pthread_attr_init,  pthread_attr_destroy,  pthread_attr_setdetachstate,
        pthread_attr_getdetachstate,                pthread_attr_setschedparam,
        pthread_attr_getschedparam,                pthread_attr_setschedpolicy,
        pthread_attr_getschedpolicy,              pthread_attr_setinheritsched,
        pthread_attr_getinheritsched,                    pthread_attr_setscope,
        pthread_attr_getscope - thread creation attributes


        #include <pthread.h>
        int pthread_attr_init(pthread_attr_t *attr);
        int pthread_attr_destroy(pthread_attr_t *attr);
        int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
        int   pthread_attr_getdetachstate(const   pthread_attr_t   *attr,   int
        int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);
        int pthread_attr_getschedpolicy(const pthread_attr_t *attr,  int  *pol-
        int   pthread_attr_setschedparam(pthread_attr_t   *attr,  const  struct
        sched_param *param);
        int  pthread_attr_getschedparam(const  pthread_attr_t   *attr,   struct
        sched_param *param);
        int pthread_attr_setinheritsched(pthread_attr_t *attr, int inherit);
        int   pthread_attr_getinheritsched(const   pthread_attr_t   *attr,  int
        int pthread_attr_setscope(pthread_attr_t *attr, int scope);
        int pthread_attr_getscope(const pthread_attr_t *attr, int *scope);


        Setting  attributes  for  threads  is  achieved  by  filling  a  thread
        attribute object attr of type pthread_attr_t, then passing it as second
        argument to pthread_create(3).  Passing NULL is equivalent to passing a
        thread  attribute  object with all attributes set to their default val-
        pthread_attr_init initializes the  thread  attribute  object  attr  and
        fills  it  with  default values for the attributes. (The default values
        are listed below for each attribute.)
        Each attribute attrname (see below for a list of all attributes) can be
        individually   set  using  the  function  pthread_attr_setattrname  and
        retrieved using the function pthread_attr_getattrname.
        pthread_attr_destroy destroys a thread attribute object, which must not
        be reused until it is reinitialized.  pthread_attr_destroy does nothing
        in the LinuxThreads implementation.
        Attribute objects are consulted only when creating a  new  thread.  The
        same attribute object can be used for creating several threads. Modify-
        ing an attribute object after a call to pthread_create does not  change
        the attributes of the thread previously created.
        The following thread attributes are supported:
        Control  whether  the  thread  is  created in the joinable state (value
        PTHREAD_CREATE_JOINABLE)  or  in  the  detached  state  (  PTHREAD_CRE-
        Default value: PTHREAD_CREATE_JOINABLE.
        In  the  joinable  state,  another thread can synchronize on the thread
        termination and recover its termination code using pthread_join(3), but
        some of the thread resources are kept allocated after the thread termi-
        nates, and reclaimed only when another thread performs  pthread_join(3)
        on that thread.
        In  the detached state, the thread resources are immediately freed when
        it terminates, but pthread_join(3) cannot be used to synchronize on the
        thread termination.
        A thread created in the joinable state can later be put in the detached
        thread using pthread_detach(3).
        Select the scheduling policy for the thread: one of SCHED_OTHER  (regu-
        lar,  non-realtime  scheduling),  SCHED_RR  (realtime,  round-robin) or
        SCHED_FIFO (realtime, first-in first-out). See  sched_setpolicy(2)  for
        more information on scheduling policies.
        Default value: SCHED_OTHER.
        The  realtime scheduling policies SCHED_RR and SCHED_FIFO are available
        only to processes with superuser privileges.
        The scheduling policy of a thread can be changed  after  creation  with
        Contain  the  scheduling parameters (essentially, the scheduling prior-
        ity) for the thread. See  sched_setparam(2)  for  more  information  on
        scheduling parameters.
        Default value: priority is 0.
        This   attribute  is  not  significant  if  the  scheduling  policy  is
        SCHED_OTHER; it only matters for the  realtime  policies  SCHED_RR  and
        The  scheduling priority of a thread can be changed after creation with
        Indicate whether the scheduling policy and  scheduling  parameters  for
        the  newly created thread are determined by the values of the schedpol-
        icy and schedparam attributes  (value  PTHREAD_EXPLICIT_SCHED)  or  are
        inherited from the parent thread (value PTHREAD_INHERIT_SCHED).
        Default value: PTHREAD_EXPLICIT_SCHED.
        Define  the  scheduling  contention  scope for the created thread.  The
        only  value   supported   in   the   LinuxThreads   implementation   is
        PTHREAD_SCOPE_SYSTEM,  meaning  that  the  threads contend for CPU time
        with all processes running on the machine. In particular, thread prior-
        ities are interpreted relative to the priorities of all other processes
        on  the  machine.  The  other  value   specified   by   the   standard,
        PTHREAD_SCOPE_PROCESS,  means  that  scheduling  contention occurs only
        between the threads of  the  running  process:  thread  priorities  are
        interpreted relative to the priorities of the other threads of the pro-
        cess,   regardless   of   the   priorities    of    other    processes.
        PTHREAD_SCOPE_PROCESS is not supported in LinuxThreads.
        Default value: PTHREAD_SCOPE_SYSTEM.
        All  functions  return 0 on success and a non-zero error code on error.
        On success, the pthread_attr_getattrname functions also store the  cur-
        rent  value  of  the  attribute  attrname in the location pointed to by
        their second argument.


        The pthread_attr_setdetachstate function returns  the  following  error
        codes on error:
               EINVAL the  specified  detachstate  is  not  one of PTHREAD_CRE-
        The pthread_attr_setschedparam function  returns  the  following  error
        codes on error:
               EINVAL the  priority  specified in param is outside the range of
                      allowed priorities for the scheduling policy currently in
                      attr  (1  to  99  for  SCHED_FIFO  and  SCHED_RR;  0  for
        The pthread_attr_setschedpolicy function returns  the  following  error
        codes on error:
               EINVAL the   specified   policy   is  not  one  of  SCHED_OTHER,
                      SCHED_FIFO, or SCHED_RR.
                      policy is SCHED_FIFO or SCHED_RR, and the effective  user
                      of the calling process is not super-user.
        The  pthread_attr_setinheritsched  function returns the following error
        codes on error:
               EINVAL the specified inherit is not one of PTHREAD_INHERIT_SCHED
                      or PTHREAD_EXPLICIT_SCHED.
        The pthread_attr_setscope function returns the following error codes on
               EINVAL the specified scope is not one of PTHREAD_SCOPE_SYSTEM or
                      the  specified  scope  is PTHREAD_SCOPE_PROCESS (not sup-


        Xavier Leroy <>
        pthread_create(3),         pthread_join(3),          pthread_detach(3),
                                  LinuxThreads             PTHREAD_ATTR_INIT(3)