Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
flag: Boolean; // флаг созданияСодержание книги
Поиск на нашем сайте flag: Boolean; // флаг создания lpName: PChar // имя мьютекса (обычно Nil, если мьютекс // используется только внутри одного процесса) ): THandle; // дескриптор мьютекса
Флаг создания указывает (True), будет ли процесс владеть мьютексом сразу после его создания. Функция возвращает дескриптор созданного объекта, либо 0. Если мьютекс с заданным именем уже был создан, возвращается его дескриптор. Проверить, был объект создан, или используется уже существующий можно следующим образом: hMutex := CreateMutex (NIL, FALSE, ‘MutexName’); if hMutex = 0 then RaiseLastWin32Error; if GetLastError = ERROR_ALREADY_EXISTS then begin // Используем ранее созданный объект end; Мьютексы могут находиться в сигнальном (если им не владеет ни один поток, т.е. ресурс свободен) или несигнальном состоянии (поток владеет мьютексом). Чтобы поток завладел мьютексом (т.е. получил доступ к ресурсу), необходимо вызвать функцию ожидания function WaitForSingleObject( hHandle: THandle; // дескриптор мьютекса dwMilliseconds: DWord // время ожидания в мс ): DWord; Параметр dwMilliseconds может принимать значение Infinite, что означает бесконечный интервал ожидания. Функция завершает работу, если мьютекс становится сигнальным или истекло время ожидания. После этого поток, находящийся в состоянии ожидания мьютекса, получает к нему доступ, а мьютекс, получивший нового владельца, перестает сигнализировать. Мьютекс можно сравнить с «эстафетной палочкой», которую бегун (поток) молча держит, проходя дистанцию, и кричит «Держи!» (сигнализирует), завершив дистанцию. Вместо WaitForSingleObject может также применяться функция WaitForMultipleObjects [3], которая завершает работу, если несколько мьютексов перешли в сигнальное состояние. После того, как поток выполнил участок кода, содержащий совместно используемый ресурс, необходимо освободить мьютекс от потока-владельца с помощью функции API
|
||
|
Последнее изменение этой страницы: 2024-06-27; просмотров: 50; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.007 с.) |