Ошибки
Функция pthread_attr_setschedpolicy () м ожет завершиться неудачно, если:
[EINVAL]значение, заданное пара м етро м policy, недействительно;
[ENOTSUP]была сделана попытка установить атрибут равным значению, которое не поддерживается реализацией.
Эти функции не возвращают код ошибки [EINTR].
Примеры
Отсутствуют.
Замечания по использованию
После установки этих атрибутов поток можно создать путем вызова функции pthread_create () с использованием объекта атрибутов. Применение этих функций не оказывает влияния на поток, выполняемый в данный момент.
Логическое обоснование
Отсутствует.
Будущие направления
Отсутствуют.
Смотри также
pthread_attr_destroy(), pthread_attr_getscope(), pthread_attr_getinheritsched (), pthread_attr_getschedparam(), pthread_create (), том Base Definidons стан д арта IEEE Std 1003.1-2001, , .
Последовательность внесения изменений
Функции впервые реализованы в выпуске 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 — функция от м ены выполнения потока.
Синопсис
THR #include
int pthread_cancel (pthread_t thread);
Описание
Функция pthread_cancel () создает запрос на отмену потока. Когда именно отмена вступит в силу, зависит от текущего состояния потока, заданного параметром thread, и его типа. При от м ене потока должны быть вызваны обработчики, выполняющие подготовительные действия, связанные с отменой потока. По завершении последнего обработчика должны быть вызваны деструкторы объектных данных, используемых отменяемым потоком. По завершении последнего деструктора поток, заданный пара м етро м thread, должен завершиться.
Действия, связанные с от м еной заданного потока, выполняются асинхронно по отношению к потоку, вызывающему функцию pthread_cancel ().
Возвращаемое значение
При успешном завершении функция pthread_cancel () возвращает нулевое значение; в противном случае — код ошибки, обозначающий ее характер.
Ошибки
Функция pthread_cancel () м ожет завершиться неудачно, если:
[ESRCH]не удалось найти поток, иде н тификационный но м ер (ID) которого соответствовал бы заданно м у.
Функция pthread_cancel () не возвра щ ает код ошибки [EINTR].
Примеры
Отсутствуют.
Замечания по использованию
Отсутствуют.
Логическое обоснование
Для отправки потоку уведо м ления об от м ене расс м атривалось два альтернативных варианта. Для одного предполагалось определить новый сигнал SIGCANCELс соответствующей семантикой отмены, а для другого— новую функцию pthread_cancel (), которая бы приводила в действие процедуру отмены потока.
Преимущество варианта, прелусматривающего создание нового сигнала, состояло в том, что критерии его выдачи были бы во многом идентичны тем, которые использовались при попытке выдать любой другой сигнал, поэтому сигнальный механизм уведомления об отмене казался унифицированным. И в самом деле, во многих реализациях отмена потоков осуществляется посредством специального сигнала. Однако до сих пор не существовало ни одной сигнальной функции (за исключением функции pthread_kill()), которую можно было бы использовать совместно с этим новым сигналом, поскольку поведение выдаваемого сигнала отмены должно было отличаться от поведения любого из уже определенных сигналов.
К достоинству варианта создания специальной функции можно отнести осознание того, что уведомление об отмене потока было бы в этом случае четко определенным. Кроме того, механизм выдачи уведомления об отмене не требует реализации в виде сигнала. Ведь если такой механизм заметно ближе к сигналам, то ему свойственны аналогии с языковым механизмом исключительных ситуаций, которые потенциально не видны.
Читать дальше