Главное меню справа

Поскольку счетчику текущего числа ресурсов

Поскольку счетчику текущего числа ресурсов

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

HANDLE hSem = CreateSemaphore(NULL, 0, 5, NULL);

Это приводит к созданию семафора со счетчиком максимального числа ресурсов, равным 5, при этом изначально ни один ресурс не доступен. (Кстати, счетчик числа пользователей данного объекта ядра равен 1, так как я только что создал этот объект; не запутайтесь в счетчиках.) Поскольку счетчику текущего числа ресурсов присвоен 0, семафор находится в занятом состоянии. А это значит, что любой поток, ждущий се­мафор, просто засыпает.

Поток получает доступ к ресурсу, вызывая одну из Wait-функций и передавая ей описатель семафора, который охраняет этот ресурс. Wait-функция проверяет у сема­фора счетчик текущего числа ресурсов: если его значение больше 0 (семафор свобо­ден), уменьшает значение этого счетчика на 1, и вызывающий поток остается плани­руемым. Очень важно, что семафоры выполняют эту операцию проверки и присвое­ния на уровне атомарного доступа; иначе говоря, когда Вы запрашиваете у семафора какой-либо ресурс, операционная система проверяет, доступен ли этот ресурс, и, если да, уменьшает счетчик текущего числа ресурсов, не позволяя вмешиваться в эту опе­рацию другому потоку. Только после того как счетчик ресурсов будет уменьшен на 1, доступ к ресурсу сможет запросить другой поток.

Если Wait-функция определяет, что счетчик текущего числа ресурсов равен 0 (се­мафор занят), система переводит вызывающий поток в состояние ожидания. Когда другой поток увеличит значение этого счетчика, система вспомнит о ждущем потоке и снова начнет выделять ему процессорное время (а он, захватив ресурс, уменьшит значение счетчика на 1).

Поток увеличивает значение счетчика текущего числа ресурсов, вызывая функцию ReleaseSemaphore:

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

Новости

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

Дизайны

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