Этот показатель сообщает, сколько процессорного

Этот показатель сообщает, сколько процессорного

Создание эффективных Win32-приложений - ДЖ. Рихтер

Ограничения на задание вводятся вызовом:

BOOL SetInformationJobObject(

HANDLE hJob,

JOBOBJECTINFOCLASS JobObjectInformationClass,

PVOID pJobObjectInformation,

DWORD cbJobObjectInformationLength);

Первый параметр определяет нужное Вам задание, второй параметр (перечисли­мого типа) — вид ограничений, третий — адрес структуры данных, содержащей под­робную информацию о задаваемых ограничениях, а четвертый — размер этой струк­туры (используется для указания версии). Следующая таблица показывает, как уста­навливаются ограничения.

В функции StartRestrictedProcess я устанавливаю для задания лишь несколько базо­вых ограничений. Для этого я создаю структуру JOB_OBJECT_BASIC_LIMIT_INFOR- MATION, инициализирую ее и вызываю функцию SetlnformationJobObject. Данная струк­тура выглядит так:

typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION {

LARGE_INTEGER PerProcessUserTimeLimit;

LARGE_INTEGER PerJobUserTimeLimit;

DWORD          LimitFlags;

довольно туманно изложены в документации Platform SDK. Указывая ограничения для задания, Вы устанавливаете те или иные биты в элементе LimitFlags. Например, в StartRestrictedProcess я использовал флаги JOB_OBJECT_LIMIT_PRIORITY_CLASS и JOB_ OBJECT_LIMIT_JOB_TIME, т. е. определил всего два ограничения.

При выполнении задание ведет учет по нескольким показателям — например, сколько процессорного времени уже использовали его процессы. Всякий раз, когда Вы устанавливаете базовые ограничения с помощью флага JOB_OBJECT_LIMIT_JOB_ TIME, из общего процессорного времени, израсходованного всеми процессами, вы­читается то, которое использовали завершившиеся процессы. Этот показатель сооб­щает, сколько процессорного времени израсходовали активные на данный момент процессы. А что если Вам понадобится изменить ограничения на доступ к подмно­жеству процессоров, не сбрасывая при этом учетную информацию по процессорно­му времени? Для этого Вы должны ввести новое базовое ограничение флагом JOB_OB- JECT_LIMIT_AFFINITY и отказаться от флага JOB_OBJECT_LIMIT_JOB_TIME. Но тогда получится, что Вы снимаете ограничения на процессорное время.

ДЖ. Рихтер: Создание эффективных Win32-приложений. Часть 1.

Новости

все
25.07.2012
Главный инспектор аэрокосмического агентства США, НАСА, сообщил о расследовании скандального
24.07.2012
Анонсированы Leica M9 и X1: карманный FF и APS-C с фиксом Для тех, кто не желает таскать с
23.07.2012
Скоро беспроводная сеть позволит посмотреть сквозь стену? Видеть сквозь препятствия –

Дизайны

Разработали структуру сайта, создали сайт, соответствующий всем требованиям заказчика. Создали
Разработали структуру сайта, создали сайт по новым технологиям. Создали индивидуальный и
ООО Транспортная Компания «ТрансРусь» предлагает Вам свои услуги по приемке и