Параллельное и распределенное программирование на С++
Шрифт:
Отмечены как часть группы Realtime Threads Feature Group.
Issue 6
Функции pthread_attr_getschedparam и pthread_attr_setschedparam отмечены как часть опции Threads.
В целях согласования со стандарто м IEEE Std 1003.1d-1999 была добавлена стратегия планирования SCHED_SPORADIC.
В целях согласования со стандарто м ISO/IEC 9899: 1999 в прототипы функций pthread_attr_getschedparam и pthread_attr_setschedparam было добавлено ключевое слово restrict.
pthread_attr_getschedpolicy, pthread_attr_setschedpolicy
Имя
pthread_attr_getschedpolicy, pthread_attr_setschedpolicy —
Синопсис
THR, TPS
#include <pthread.h>
int pthread_attr_getschedpolicy (const pthread_attr_t *restrict attr, int *restrict policy) ;
int pthread_attr_setschedpolicy (pthread_attr_t *attr, int policy) ;
Описание
Функции pthread_attr_getschedpolicy и pthread_attr_setschedpolicy используются для считывания и установки соответственно атрибута schedpolicy в объекте атрибутов, адресуемом параметром аttr.
Для обозначения стратегии планирования поддерживаются значения SCHED_FIF0, SCHED_RR и SCHED_OTHER, которые определены в заголовке <sched. h>.
TSP Когда потоки, выполняющиеся с использованием стратегий планирования SCHED_FIFO, SCHED_RR или SCHED_SPORADIC, ожидают освобождения мьютекса, то его получение (после разблокировки) происходит согласно приоритета м.
Возвращаемые значения
При успешном завершении функции pthread_attr_getschedpolicy и pthread_attr_setschedpolicy возвращают нулевое значение; в противно м случае — код ошибки, обозначающий ее характер.
Ошибки
Функция pthread_attr_setschedpolicy м ожет завершиться неудачно, если:
[EINVAL] значение, заданное пара м етро м policy, недействительно;
[ENOTSUP] была сделана попытка установить атрибут равным значению, которое не поддерживается реализацией.
Эти функции не возвращают код ошибки [EINTR].
Примеры
Отсутствуют.
Замечания по использованию
После установки этих атрибутов поток можно создать путем вызова функции pthread_create с использованием объекта атрибутов. Применение этих функций не оказывает влияния на поток, выполняемый в данный момент.
Логическое обоснование
Отсутствует.
Будущие направления
Отсутствуют.
Смотри также
pthread_attr_destroy, pthread_attr_getscope, pthread_attr_getinheritsched , pthread_attr_getschedparam, pthread_create ,
Последовательность внесения изменений
Функции впервые реализованы в выпуске Issue 5. Включены для согласования с расширение м POSIX Threads Extension.
От м ечены как часть группы Realtime Threads Feature Group.
Issue 6
Функции pthread_attr_getschedpolicy и pthread_attr_setschedpolicy от м ечены как часть опций Threads и Thread Execution Scheduling.
Условие ошибки [ENOSYS] было удалено, поскольку в заглушках нет необходимости, если реализация не поддерживает опцию Thread Execution Scheduling.
В целях согласования со стандарто м IEEE Std 1003.1d-1999 была добавлена стратегия планирования SCHED_SPORADIC.
В целях согласования со стандарто м ISO/IEC 9899: 1999 в прототип функции pthread_attr_getschedpolicy было добавлено ключевое слово restrict.
pthread_cancel
Имя
pthread_cancel — функция от м ены выполнения потока.
Синопсис
THR #include <pthread.h>
int pthread_cancel (pthread_t thread);
Описание
Функция pthread_cancel создает запрос на отмену потока. Когда именно отмена вступит в силу, зависит от текущего состояния потока, заданного параметром thread, и его типа. При от м ене потока должны быть вызваны обработчики, выполняющие подготовительные действия, связанные с отменой потока. По завершении последнего обработчика должны быть вызваны деструкторы объектных данных, используемых отменяемым потоком. По завершении последнего деструктора поток, заданный пара м етро м thread, должен завершиться.
Действия, связанные с от м еной заданного потока, выполняются асинхронно по отношению к потоку, вызывающему функцию pthread_cancel .
Возвращаемое значение
При успешном завершении функция pthread_cancel возвращает нулевое значение; в противном случае — код ошибки, обозначающий ее характер.
Ошибки
Функция pthread_cancel м ожет завершиться неудачно, если:
[ESRCH] не удалось найти поток, иде н тификационный но м ер (ID) которого соответствовал бы заданно м у.