Книга: Основы программирования в Linux
Атрибуты планирования потока
Атрибуты планирования потока
Давайте рассмотрим второй атрибут потока, который вам, возможно, захочется изменить, — атрибут планирования. Изменение этого атрибута очень похоже на установку отсоединенного состояния потока, но есть дополнительные функции, которые можно применять для подбора допустимых уровней приоритета, sched_get_priority_max
и sched_get_priority_min
.
Выполните упражнение 12.6.
Упражнение 12.6. Планирование
Поскольку данная программа thread6.c очень похожа на программу предыдущего упражнения, мы рассмотрим только отличия.
1. Прежде всего, вам понадобится несколько дополнительных переменных:
int max_priority;
int min_priority;
struct sched_param scheduling_value;
2. После того как установлен атрибут отсоединения, вы задаете политику планирования:
res = pthread_attr_setschedpolicy(&thread_attr, SCHED_OTHER);
if (res != 0) {
perror("Setting scheduling policy failed");
exit(EXIT_FAILURE);
}
3. Далее находите диапазон допустимых приоритетов
max_priority = sched_get_priority_max(SCHED_OTHER);
min_priority = sched_get_priority_min(SCHED_OTHER);
и задаете один из них:
scheduling_value.sched_priority = min_priority;
res = pthread_attr_setschedparam(&thread_attr, &scheduling_value);
if (res != 0) {
perror("Setting scheduling priority failed");
exit(EXIT_FAILURE);
}
Когда вы запустите программу, то получите следующий вывод:
$ ./thread6
Waiting for thread to say it's finished...
thread_function is running. Argument was Hello World
Waiting for thread to say it's finished...
Waiting for thread to say it's finished...
Waiting for thread to say it's finished...
Second thread setting finished flag, and exiting now
Other thread finished, bye!
Как это работает
Этот пример очень похож на установку атрибута отсоединенного состояния за исключением того, что вы задаете вместо него способ планирования.
- Атрибуты потока
- 1.2. Предмет коммуникации как основа планирования кампаний по продвижению
- 1.3.5. Методы и атрибуты
- 2. Домены и атрибуты
- 4. Виртуальные атрибуты
- Стратегия планирования в действии
- 8.8.11. Мероприятие 12: Раскрытие информации о механизмах агрессивного налогового планирования
- У файла и каталога есть атрибуты (например: Скрытый, Только чтение). Как ими управлять из командной строки?
- Применение основного потока
- Пример использования фонового потока для выполнения отдельной задачи
- Управление проектом на этапе концептуального планирования
- Листинг 5.8. (dup2.c) Перенаправление выходного потока канала с помощью функции dup2()