Параллельное и распределенное программирование на С++
Шрифт:
Поскольку значение состояния выхода определяется приложением (за исключением случаев, когда поток был отменен, т.е. в случаях отмены используется значение PTHREAD_CANCELED), реализации не известно, что следует понимать под недействительным значением состояния, поэтому проверка на наличие ошибок не выполняется.
Будущие направления
Отсутствуют.
Смотри также
exit , pthread_create , pthread_join , том Base Definitions стан д арта IEEE Std 1003.1-2001, <pthread.h>.
Последовательность внесения изменений
Функция впервые реализована в выпуске Issue 5. Включена для со г
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 соответственно.