Чтение онлайн

ЖАНРЫ

Параллельное и распределенное программирование на С++
Шрифт:

Поскольку значение состояния выхода определяется приложением (за исключением случаев, когда поток был отменен, т.е. в случаях отмены используется значение PTHREAD_CANCELED), реализации не известно, что следует понимать под недействительным значением состояния, поэтому проверка на наличие ошибок не выполняется.

Будущие направления

Отсутствуют.

Смотри также

exit , pthread_create , pthread_join , том Base Definitions стан д арта IEEE Std 1003.1-2001, <pthread.h>.

Последовательность внесения изменений

Функция впервые реализована в выпуске Issue 5. Включена для со г

ласования с расширение м POSIX Threads Extension.

Issue 6

Функция pthread_exit от м ече н а как часть опции Threads.

pthread_getconcurrency, pthread_setconcurrency

Имя

pthread_getconcurrency, pthread_setconcurrency — функции считывания и установки уровня параллелизма.

Синопсис

XSI

 #include <pthread.h>

int pthread_getconcurrency (void);

int pthread_setconcurrency (int new_level);

Описание

Несвязанные потоки в процессе выполняются (или не выполняются) одновременно. По умолчанию реализация потоков гарантирует активность достаточного количества потоков для того, чтобы процесс мог успешно продолжать выполнение. И хотя такой подход сохраняет системные ресурсы, он может не обеспечить наиболее эффективный уровень параллелизма.

Функция pthread_setconcurrency позволяет приложению с помощью пара м етра new_level информировать реализацию потоков о желаемом уровне параллелизма. Реальный же уровень параллелизма, обеспечиваемый реализацией в результате вызова этой функции, не определен. Если значение параметра new_level равно нулю, это означает, что реализация должна поддерживать уровень параллелизма таким, как если бы функция pthread_setconcurrency никогда не вызывалась.

Функция pthread_getconcurrency возвращает значение, установленное в результате предыдущего обращения к функции pthread_setconcurrency . Если «предыдущего» вызова этой функции не было, функция pthread_getconcurrency возвращает нуль, который означает, что реализация поддерживает заданный уровень параллелизма.

Обращение к функции pthread_setconcurrency информирует реализацию о желаемом уровне параллелизма, а реализация использует его как совет, а не требование.

Если реализация не поддерживает мультиплексирование пользовательских потоков, то функции pthread_setconcurrency и pthread_getconcurrency используются ради совместимости исходного кода, но не дают никакого эффекта при вызове. Для поддержки семантики функций параметр new_level сохраняется при вызове функции pthread_setconcurrency , чтобы послелующее обращение к функции pthread_getconcurrency могло вернуть то же значение.

Возвращаемые значения

При успешном выполнении функция 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, <pthread.h>.

Последовательность внесения изменений

Функции впервые реализованы в выпуске Issue 5.

pthread_getschedparam, pthread_setschedparam

Имя

pthread_getschedparam, pthread_setschedparam — функции динамического доступа к параметрам стратегии планирования потока (REALTIME THREADS).

Синопсис

THR TPS

#include <pthread.h>

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 соответственно.

Поделиться с друзьями: