PTHREAD_ATTR(3) | Library Functions Manual | PTHREAD_ATTR(3)

# NAME

`pthread_attr_init`, `pthread_attr_destroy` —
thread attribute operations

# LIBRARY

POSIX Threads Library (libpthread, -lpthread)

# SYNOPSIS

`#include <pthread.h>`

int
`pthread_attr_init`(pthread_attr_t *attr);

int
`pthread_attr_destroy`(pthread_attr_t *attr);

# DESCRIPTION

Thread attributes are used to specify parameters to `pthread_create`(). One attribute object can be used in multiple calls to `pthread_create`(), with or without modifications between the calls. The pthread_attr_t type is an opaque representation of the thread attributes; any access to the object other than via the described `pthread_attr_*`() functions may result in undefined behavior.

The `pthread_attr_init`() function initializes attr with the default thread attributes used in the implementation. Depending on the implementation, undefined behavior may follow if an uninitialized thread attribute object is used with some of the thread attribute functions. It is therefore a good practice to always use `pthread_attr_init`(), even if this might be unnecessary. Undefined behavior may also follow if an already initialized attr is used with `pthread_attr_init`().

When the attribute object is no longer needed, it should be destroyed by using `pthread_attr_destroy`(). The function has no effect on threads that were created by using a given attribute object. A destroyed attr can be reinitialized using `pthread_attr_init`(), but all other actions with the destroyed object are unspecified.

The following standard thread attribute functions are available:

Function | Description
pthread_attr_getdetachstate(3) | thread detach state
pthread_attr_getguardsize(3) | thread guard size
pthread_attr_getinheritsched(3) | inherit scheduler attribute
pthread_attr_getschedparam(3) | thread scheduling parameter
pthread_attr_getschedpolicy(3) | thread scheduling policy
pthread_attr_getscope(3) | thread contention scope
pthread_attr_getstack(3) | thread stack
pthread_attr_getstacksize(3) | thread stack size
pthread_attr_getstackaddr(3) | thread stack address

Each listed `pthread_attr_get*`() function has a `pthread_attr_set*`() counterpart. In addition, the following NetBSD specific extensions are available:

Function | Description
pthread_attr_get_np(3) | attributes of a running thread
pthread_attr_getname_np(3) | descriptive name of an attribute

# RETURN VALUES

If successful, these functions return 0. Otherwise, an error number is returned to indicate the error.

# ERRORS

No errors are defined for `pthread_attr_init`() and `pthread_attr_destroy`().

# SEE ALSO

pthread_create(3), pthread_join(3)

# STANDARDS

Both `pthread_attr_init`() and `pthread_attr_destroy`() conform to IEEE Std 1003.1-2001 (“POSIX.1”).

July 9, 2010 | NetBSD 9.2