Читаем Параллельное и распределенное программирование на С++ полностью

Функция pthread_attr_setschedpolicy() устанавливает член объекта атрибутов потока (заданного параметром attr), «отвечающий» за стратегию планирования потока. Параметр policy может принимать одно из следующих значений, определенных в заголовке .

SCHED_FIFO Стратегия планирования типа FIFO (первым прибыл, первым обслужен), при которой поток выполняется до конца.

SCHED_RR  Стратегия циклического планирования, при которой каждый поток

назначается процессору только в течение некоторого кванта времени- SCHED_OTHER Стратегия планирования другого типа (определяемая реализацией)-Для любого нового потока эта стратегия планирования принимается по умолчанию.

Функ ция pthread_attr_setschedparam() используется для установки членов атрибутного объекта (заданного параметром attr), связанных со стратегией планирования Параметр param представляет собой структуру, которая содержит эти члены. Структура sched_param включает по крайней мере такой член данных: struct sched_param {

int sched_priority;

//...

};

Возможно, эта структура содержит и другие члены данных, а также ряд функций, предназначенных для установки и считывания минимального и максимального значений приоритета, атрибутов планировщика и пр. Но если для задания стратегии планирования используется либо значение SCHED_FIFO, либо значение SCHED_RR, то в структуре sched_param достаточно определить только член sched_priority.

Чтобы получить минимальное и максимальное значения приоритета, используйте функции sched_get_priority_min () и sched_get_priority_max ().

Синопсис

#include

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. Создадим поток с помощью атрибутного объекта.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных