ВУЗ:
Составители:
52
параметром lpName. Имя мьютекса не должно совпадать с именем уже
существующего события, семафора и других объектов межпроцессной
синхронизации. Функция GetLastError при вызове будет выдавать
ERROR_ALREADY_EXISTS.
Для открытия существующего мьютекса используется функция OpenMutex,
освобождения – ReleaseMutex.
Семафор создаѐтся функцией:
Функция CreateSemaphore
HANDLE CreateSemaphore
(
LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, // атрибут доступа
LONG lInitialCount, // инициализированное начальное
// состояние счетчика
LONG lMaximumCount, // максимальное количество
// обращений
LPCTSTR lpName // имя объекта
);
При успешном выполнении функция вернет идентификатор семафора, в
противном случае NULL. После того как необходимость в работе с объектом отпала
нужно вызвать функцию ReleaseSemaphore, чтобы освободить счетчик. Для
открытия существующего семафора используется функция OpenSemaphore.
Объекты синхронизации используются совместно с функциями ожидания. Эти
функции связываются с одним или несколькими синхронизирующими объектами и
ждут, когда эти объекты перейдут в сигнальное состояние. В результате выполнение
процесса приостанавливается до тех пор, пока в системе не произойдѐт некоторое
событие. Ожидание одного события организуется функцией:
Функция WaitForSingleObject
DWORD WaitForSingleObject
(
HANDLE hHandle,
DWORD dwMilliseconds
);
Здесь первый параметр – дескриптор объекта синхронизации, а второй – время
ожидания в миллисекундах. Для ожидания нескольких синхронизирующих объектов
используется функция WaitForMultipleObjects.
В листинге 18 приведен пример программы использования мьютекса. При
запуске программы она создает объект с именем «MMM», если захватить его
удается WaitForSingleObject, то программа выполняется якобы, ждет пока введете
число и нажмете Enter. Если захватить его не удается, то выходит с надписью fail.
Если Вы попробуете, то Вы сможете запустить только одну копию.
параметром lpName. Имя мьютекса не должно совпадать с именем уже
существующего события, семафора и других объектов межпроцессной
синхронизации. Функция GetLastError при вызове будет выдавать
ERROR_ALREADY_EXISTS.
Для открытия существующего мьютекса используется функция OpenMutex,
освобождения – ReleaseMutex.
Семафор создаѐтся функцией:
Функция CreateSemaphore
HANDLE CreateSemaphore
(
LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, // атрибут доступа
LONG lInitialCount, // инициализированное начальное
// состояние счетчика
LONG lMaximumCount, // максимальное количество
// обращений
LPCTSTR lpName // имя объекта
);
При успешном выполнении функция вернет идентификатор семафора, в
противном случае NULL. После того как необходимость в работе с объектом отпала
нужно вызвать функцию ReleaseSemaphore, чтобы освободить счетчик. Для
открытия существующего семафора используется функция OpenSemaphore.
Объекты синхронизации используются совместно с функциями ожидания. Эти
функции связываются с одним или несколькими синхронизирующими объектами и
ждут, когда эти объекты перейдут в сигнальное состояние. В результате выполнение
процесса приостанавливается до тех пор, пока в системе не произойдѐт некоторое
событие. Ожидание одного события организуется функцией:
Функция WaitForSingleObject
DWORD WaitForSingleObject
(
HANDLE hHandle,
DWORD dwMilliseconds
);
Здесь первый параметр – дескриптор объекта синхронизации, а второй – время
ожидания в миллисекундах. Для ожидания нескольких синхронизирующих объектов
используется функция WaitForMultipleObjects.
В листинге 18 приведен пример программы использования мьютекса. При
запуске программы она создает объект с именем «MMM», если захватить его
удается WaitForSingleObject, то программа выполняется якобы, ждет пока введете
число и нажмете Enter. Если захватить его не удается, то выходит с надписью fail.
Если Вы попробуете, то Вы сможете запустить только одну копию.
52
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »
