pthread_attr_setscope, pthread_attr_getscope — set/get contention scope attribute in thread attributes object
#include <pthread.h>
int pthread_attr_setscope( |
pthread_attr_t *attr, |
int scope) ; |
int pthread_attr_getscope( |
pthread_attr_t *attr, |
int *scope) ; |
![]() |
Note |
---|---|
Compile and link with |
The pthread_attr_setscope
()
function sets the contention scope attribute of the thread
attributes object referred to by attr
to the value specified in
scope
. The contention
scope attribute defines the set of threads against which a
thread competes for resources such as the CPU. POSIX.1-2001
specifies two possible values for scope
:
PTHREAD_SCOPE_SYSTEM
The thread competes for resources with all other
threads in all processes on the system that are in the
same scheduling allocation domain (a group of one or
more processors). PTHREAD_SCOPE_SYSTEM
threads are
scheduled relative to one another according to their
scheduling policy and priority.
PTHREAD_SCOPE_PROCESS
The thread competes for resources with all other
threads in the same process that were also created with
the PTHREAD_SCOPE_PROCESS
contention scope. PTHREAD_SCOPE_PROCESS
threads are
scheduled relative to other threads in the process
according to their scheduling policy and priority.
POSIX.1-2001 leaves it unspecified how these threads
contend with other threads in other process on the
system or with other threads in the same process that
were created with the PTHREAD_SCOPE_SYSTEM
contention
scope.
POSIX.1-2001 only requires that an implementation support
one of these contention scopes, but permits both to be
supported. Linux supports PTHREAD_SCOPE_SYSTEM
, but not PTHREAD_SCOPE_PROCESS
.
The pthread_attr_getscope
()
function returns the contention scope attribute of the thread
attributes object referred to by attr
in the buffer pointed to
by scope
.
pthread_attr_setscope
() can
fail with the following errors:
An invalid value was specified in scope
.
scope
specified the value PTHREAD_SCOPE_PROCESS
, which is not
supported on Linux.
The PTHREAD_SCOPE_SYSTEM
contention scope typically indicates that a userspace thread
is bound directly to a single kernel-scheduling entity. This
is the case on Linux for the obsolete LinuxThreads
implementation and the modern NPTL implementation, which are
both 1:1 threading implementations.
POSIX.1-2001 specifies that the default contention scope is implementation-defined.
pthread_attr_init(3), pthread_attr_setaffinity_np(3), pthread_attr_setinheritsched(3), pthread_attr_setschedparam(3), pthread_attr_setschedpolicy(3), pthread_create(3), pthreads(7)