pthread_attr_setscope, pthread_attr_getscope -
изменяет/возвращает
атрибут
области
конкурирования
из объекта
атрибутов
нити
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-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)
Русский
перевод
этой
страницы
руководства
был сделан
Alexey, Azamat Hackimov <
[email protected]>, kogamatranslator49
<
[email protected]>, Kogan, Max Is <
[email protected]>, Yuri
Kozlov <
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]