Шрифт:
Выполните упражнение 12.6.
Поскольку данная программа thread6.c очень похожа на программу предыдущего упражнения, мы рассмотрим только отличия.
1. Прежде всего, вам понадобится несколько дополнительных переменных:
2. После того как установлен атрибут отсоединения, вы задаете политику планирования:
3. Далее находите диапазон допустимых приоритетов
и задаете один из них:
Когда вы запустите программу, то получите следующий вывод:
Как это работает
Этот пример очень похож на установку атрибута отсоединенного состояния за исключением того, что вы задаете вместо него способ планирования.
Отмена потока
Иногда требуется, чтобы один поток попросил другой завершиться досрочно способом, очень похожим на отправку ему сигнала. Сделать это можно с помощью потоков и параллельно с помощью обработки сигнала; у потоков появляется возможность изменить свое поведение, когда их просят завершиться.
Давайте сначала рассмотрим функцию для создания запроса на завершение потока.
Она достаточно проста: имея идентификатор потока, вы можете запросить его аннулирование. На приемном конце запроса на отмену все немного сложнее, но не слишком. Поток может установить состояние отмены с помощью функции
Первый параметр равен либо значению
Тип отмены может принимать одно из следующих значений:
Мы не описываем все эти функции в данной главе, поскольку, как правило, не все они нужны. Когда они понадобятся, вы сможете найти дополнительную информацию на страницах интерактивного справочного руководства.
В соответствии со стандартом POSIX системные вызовы, способные задерживать выполнение, такие как