Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows


Реализация критической секции: объект-оптекс - часть 3


Переменная

Описание

m_lLockCount

Сообщает, сколько раз потоки пытались занять оптекс Ее значение равно 0, если оптекс не занят ни одним потоком.

т dwThreadId

Сообщает уникальный идентификатор потока — владельца оптекса Ее значение равно 0, если оптекс не занят ни одним потоком

m_lRecurseCount

Указывает, сколько раз отеке был занят потоком- владельцем. Ее зна чение равно 0, если оптекс не занят ни одним потоком.

m_hevt

Содержит описатель объекта ядра «событие", используемого, только если поток пытается войти в оптекс в то время, как им владеет другой поток. Описатели объектов ядра специфичны для конкретных процес сов, и имении поэтому данная переменная не включена в структуру SHAREDINFO.

m_dwSpinCount

Определяет, сколько попыток входа в оптекс должен предпринять по ток до перехода в состояние ожидания на объекте ядра «событие». На однопроцессорной машине значение этой переменной всегда равно 0.

m_hfm

Содержит описатель объекта ядра «проекция файла», используемого при разделении оптекса несколькими процессами Описатели объек тов ядра специфичны для конкретных процессов, и именно поэтому данная переменная не включена в структуру SHAREDINFO. В однопро цессном оптексе значение этой переменной всегда равно NULL

m_psi

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

Комментариев в исходном коде вполне достаточно, и у Вас не должно возникнуть трудностей в понимании того, как работает оптекс. Важно лишь отметить, что высо кое быстродействие оптекса достигается за счет интенсивного использования lnterlo ced-функций. Благодаря им код выполняется в пользовательском режиме и перехо дит в режим ядра только в том случае, когда это действительно необходимо.




Начало  Назад  Вперед



Книжный магазин