Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Синопсис. int sched_get_priority_max(int policy);
#include < sched.h> int sched_get_priority_max(int policy); int sched_get_priority_min(int policy); Обеим функциям в качестве параметра policy передается значение, определяющее выбранную стратегию планирования, для которой нужно установить значения приоритета, и обе функции возвращают соответствующее значение приоритета (минимальное и максимальное) для заданной стратегии планирования. Как установить стратегию планирования и приоритет потока с помощью атрибутного объекта, показано в листинге 4.4. // Листинг 4.4. Использование атрибутного объекта потока И для установки стратегии планирования и II приоритета потока #define Min_Stack_Req 3000000
pthread_t ThreadA; pthread_attr_t SchedAttr; size_t DefaultSize, SizeOffset, NewSize; int MinPriority, MaxPriority, MidPriority; sched_param SchedParam;
int main(int argc, char *argv[]) { //... // initialize attribute object pthread_attr_init(& SchedAttr); // retrieve min and max priority values for scheduling policy MinPriority = sched_get_priority_max(SCHED_RR); MaxPriority = sched_get_priority_min(SCHED_RR); // calculate priority value MidPriority = (MaxPriority + MinPriority)/2; // assign priority value to sched_param structure SchedParam.sched_priority = MidPriority; // set attribute object with scheduling parameter pthread_attr_setschedparam(& Attr1, & SchedParam); // set scheduling attributes to be determined by attribute object pthread_attr_setinheritsched(& Attr1, PTHREAD_EXPLICIT_SCHED); // set scheduling policy pthread_attr_setschedpolicy(& Attr1, SCHED_RR); // create thread with scheduling attribute object pthread_create(& ThreadA, & Attr1, task2, Value); } В листинге 4.4 стратегия планирования и приоритет потока ThreadA устанавливаются с использованием атрибутного объекта SchedAttr. Выполним следующие действия. 1. Инициализируем атрибутный объект. 2. Считаем минимальное и максимальное значения приоритета для стратегии планирования. 3. Вычислим значение приоритета. 4. Запишем значение приоритета в структуру sched_param. 5. Установим атрибутный объект. 6. Обеспечим установку атрибутов планирования с помощью атрибутного объекта. 7. Установим стратегию планирования. 8. Создадим поток с помощью атрибутного объекта. Последовательное выполнение этих действий позволяет установить стратегию планирования и приоритет потока до его создания. Для динамического изменения стратегии планирования и приоритета используйте функции pthread_setschedparam () и pthread_setschedprio().
|