pthread_attr_setscope(3)

ИМЯ
pthread_attr_setscope, pthread_attr_getscope - изменяет/возвращает атрибут области конкурирования из объекта атрибутов нити

LIBRARY
POSIX threads library (libpthread, -lpthread)

СИНТАКСИС
#include <pthread.h>

int pthread_attr_setscope(pthread_attr_t *attr, int scope);
int pthread_attr_getscope(const pthread_attr_t *restrict attr,
                          int *restrict scope);

ОПИСАНИЕ
Функция pthread_attr_setscope() изменяет атрибут области конкурирования (contention scope) в объекте атрибутов нити, на который указывает attr, в значение scope. Данным атрибутом определяется набор нитей, с которыми нить конкурирует за ресурсы (например ЦП). В POSIX.1 указаны два возможных значения scope:

PTHREAD_SCOPE_SYSTEM
    Нить конкурирует за ресурсы со всеми нитями всех процессов системы, которые находятся в том же домене планирования выделения (группа из одного или нескольких процессоров). Нити с PTHREAD_SCOPE_SYSTEM запланированы друг относительно друга согласно их политике планирования и приоритета.

PTHREAD_SCOPE_PROCESS
    Нить конкурирует за ресурсы со всеми нитями процесса, в котором она создана, и которые также созданы с областью конкурирования PTHREAD_SCOPE_PROCESS. Нити с PTHREAD_SCOPE_PROCESS запланированы относительно других нитей процесса согласно их политике планирования и приоритета. В POSIX.1 не указано как эти нити конкурируют с нитями из других процессов системы или с другими нитями того же процесса, которые созданы с областью конкурирования PTHREAD_SCOPE_SYSTEM.

В 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() может завершиться со следующими ошибками:

EINVAL
    Указано неверное значение в scope.

ENOTSUP
    Значение scope равно PTHREAD_SCOPE_PROCESS, которое не поддерживается в Linux.

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение
pthread_attr_setscope(), pthread_attr_getscope() | Безвредность в нитях | MT-Safe

СТАНДАРТЫ
POSIX.1-2008.

ИСТОРИЯ
POSIX.1-2001.

ЗАМЕЧАНИЯ
Область конкурирования 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)

ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Kogan, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 (https://www.gnu.org/licenses/gpl-3.0.html) или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.