Возвращаемые значения
При успешном выполнении функция pthread_setconcurrency() возвращает нулевое значение; в противном случае — код ошибки, обозначающий ее характер.
Функция pthread_getconcurrency () всегда возвращает уровень параллелизма, установленный в результате предыдущего обращения к функции pthread_setconcurrency (). Если «предыдущего» вызова этой функции не было, функция pthread_getconcurrency () возвращает нуль.
Ошибки
Фу н кци я pthread_setconcurrency () завершится неудачно, если:
[EINVAL] значение, заданное пара м етро м new_level , отрицательно;
[EAGAIN]значение, заданное пара м етро м new_level, приводит к перерасхолу систе м ных ресурсов.
Эти функции не возвращают код ошибки [EINTR].
Примеры
Отсутствуют.
Замечания по использованию
Использование этих функций изменяет состояние базового уровня параллелизма, от которого зависит работа приложения. Разработчикам библиотек рекомендуется не использовать функции pthread_getconcurrency() и pthread_setconcurrency(), поскольку это может привести к конфликту с их использованием в приложении.
Логическое обоснование
Отсутствует.
Будущие направления
Отсутствуют.
Смотри также
То м Base Definitions стандарта IEEE Std 1003.1-2001, .
Последовательность внесения изменений
Функции впервые реализованы в выпуске Issue 5.
pthread_getschedparam, pthread_setschedparam
Имя
pthread_getschedparam, pthread_setschedparam — функции динамического доступа к параметрам стратегии планирования потока (REALTIME THREADS).
Синопсис
THR TPS
#include
int pthread_getschedparam (pthread_t thread, int *restrict policy, struct sched_param *restrict param);
int pthread_setschedparam (pthread_t thread, int policy, const struct sched_param *param);
Описание
Функции pthread_getschedparam() и pthread_setschedparam() используются для считывания и установки соответственно значений стратегии планирования и параметров отдельных потоков многопоточного процесса. Для значений стратегии планирования SCHED_FIFOи SCHED_RRв структуре sched_param должен быть установлен только один ее член sched_priority [27](уровень приоритета). Для значения SCHED_OTHERпараметры планирования определяются реализацией.
Функция pthread_getschedparam() пре д назначена для считывания значения стратегии пла н ирования и пара м етров планирования для потока, идентификационный но м ер (ID) которого задан пара м етро м thread. Считанные значения сохраняются в пара м етрах policy и param. Функция pthread_getschedparam() возвра щ ает значение приоритета, установленное в результате са м ого последнего вызова функций pthread_setschedparam(), pthread_setschedprio() или pthread_create () для данного потока. Она не отражает никаких временных корректировок, вносимых в значение приоритета в результате выполнения других функций. Функция pthread_setschedparam() устанавливает для потока, ID которого за д ан пара м етро м thread, стратегию планирования и соответствую щ ие пара м етры планирования равны м и значения м пара м етров policy и nparam соответственно.
Параметр роlicy м ожет и м еть значения SCHED_OTHER, SCHED_FIFOили SCHED_RR.Параметры планирования для стратегии планирования, заданной значением SCHED_OTHER,определяются реализацией. Для страте г ии планирования, задавае м ой значения м и SCHED_FIFOи SCHED_RR,используется только один пара м етр priority.
TSP
Если определено значение _POSIX_THREAD_SPORADIC_SERVER,аргу м ент роlicy может иметь значение SCHED_SPORADIC(за исключение м функции pthread_setschedparam()). Если стратегия планирования в момент вызова этой функции не соответствовала значению SCHED_SPORADIC,то поддержка этого значения определяется реализацией, т.е. реализация может не позволить приложению динамически изменять стратегию планирования, устанавливая ee равной значению SCHED_SPORADIC.Для стратегии планирования, определяе м ой значение м SCHED_SPORADIC,устанавливаются такие пара м етры: sched_ss_low_priority, sched_ss_repl_period, sched_ss_init_budget, sched_priority и sched_ss_max_repl. Для успешного выполнения фу н кции установки пара м етров значение пара м етра sched_ss_repl_period должно быть больше или равно значению sched_ss_init_budget; в противном случае функция завершится неудачно. Кро м е того, для успешного выполнения этой функции значение пара м етра sched_ss_max_repl должно попадать во включающий диапазон [1, SS_REPL_MAX]; в противном случае функция завершится неудачно.
Читать дальше