![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пример 2. В этом примере состояние объектов, указанных в функции WaitForSingleObject изменяется в момент вызова функции.
В этом примере состояние объектов, указанных в функции WaitForSingleObject изменяется в момент вызова функции.
если свободен ––> WaitForSingleObject(Handle_Mutex, infinite) (или событие с автоматическим сбросом)
если не свободен – стоп. При вызове функции WaitForSingleObject (…), если объект свободен, продолжает выполнение, а состояние объект изменится на противоположное (остальные процессы, в которых используется WaitForSingleObject() c этим Mutex будут ждать). В случае функции WaitForMultipleObjects (когда 3-й параметр равен TRUE) – объекты указанные в массиве, переустанавливаются в занятое состояние до тех пор, пока не освобождаются все указанные объекты (сначала дождаться освобождения всех, затем устанавливать в занятое). Это сделано, чтобы избежать тупиков. Это относится к функции WaitForMultipleObjects. (если параметр равен TRUE), лишь одного объекта (если FALSE). Четвертый параметр – аналогичен последнему параметру предыдущей функции. Возвращаемое значение – индекс описателя в массиве описателей того объекта, который освободился (если освободилось несколько, то первого из освободившихся). 102Н – ни один из объектов в течение заданного времени не освободился.
|