PTHREAD_ATTR_SETSCOPE(3) | Руководство программиста Linux | PTHREAD_ATTR_SETSCOPE(3) |
pthread_attr_setscope, pthread_attr_getscope - изменяет/возвращает атрибут области конкурирования из объекта атрибутов нити
#include <pthread.h>
int pthread_attr_setscope(pthread_attr_t *attr, int scope); int pthread_attr_getscope(const pthread_attr_t *attr, int *scope);
Компилируется и компонуется вместе с -pthread.
Функция pthread_attr_setscope() изменяет атрибут области конкурирования (contention scope) в объекте атрибутов нити, на который указывает attr, в значение scope. Данным атрибутом определяется набор нитей, с которыми нить конкурирует за ресурсы (например ЦП). В POSIX.1 указаны два возможных значения scope:
В POSIX.1 от реализации требуется поддерживать, как минимум, одну из этих областей конкурирования. В Linux поддерживается PTHREAD_SCOPE_SYSTEM и не поддерживается PTHREAD_SCOPE_PROCESS.
В системах, где есть поддержка нескольких областей конкурирования, для учёта значения параметра, заданного pthread_attr_setscope(), при вызове pthread_create(3), вызывающий должен использовать pthread_attr_setinheritsched(3) для присвоения атрибуту inherit-scheduler объекта атрибутов attr значения PTHREAD_EXPLICIT_SCHED.
Функция pthread_attr_getscope() возвращает атрибут области конкурирования из объекта атрибутов нити, на который указывает attr, в буфер на который указывает scope.
При успешном выполнении эти функции возвращают 0; при ошибке возвращается ненулевой номер ошибки.
Вызов pthread_attr_setscope() может завершиться со следующими ошибками:
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение |
pthread_attr_setscope(), pthread_attr_getscope() | Безвредность в нитях | MT-Safe |
POSIX.1-2001, POSIX.1-2008.
Область конкурирования PTHREAD_SCOPE_SYSTEM обычно означает, что нить пространства пользователя явно привязана к одной единице планирования ядра. В Linux это относится как к устаревшей реализации LinuxThreads так и к новой NPTL, в которых используется привязка нитей 1:1.
В POSIX.1 сказано, что значение по умолчанию для области конкурирования оставляется за реализацией.
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)
2017-09-15 | Linux |