Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Синхронизация объектов



Для синхронизации с использованием объектов используются функции

WaitForSingleObject(…),

WaitForMultipleObject(…).

Синхронизация с использованием таких объектов ядра, как файл, процесс, поток, консольный ввод/вывод, оповещение об изменениях в файловой системе.

Рассмотрим синхронизацию на примере проессов потоков. Процесс поток пока выпоняется находится в занятом состоянии, когда завершается переход в свободное состояние. Синхронизация возможна по завершению.

1. Объект mutex.

CreateMutex(…). Объект ядра мьютекс хранит идентификатор потока, занявшего этот объект, поэтому освободить объект мьютекс может только тот поток, который его занял.

Объекты мьютекс допускают рекурсивный вход.

2. Объект семафор.

CreateSemaphore(…). Имеют счётчик числа ресурсов, пока этот счётчик числа – это максимально возможное число этого ресурса и текущий счётчик. Доступ к ресурсам возможен до тех пор, пока текущий счётчик больше максимального. Функции WaitForSingleObject(…), WaitForMultipleObject(…) увеличивают на 1 единицу текущий счётчик ресурса. Функция ReleaseSemaphore(…) уменьшает на 1 единицу счётчик.

Пример. Программа работает с последовательными портами, доступ к которым возможен с помощью семафоров. Максимального число ресурсов равно 4.

3. Объект событие. Используется для оповещения об окончании какой-либо операции. Существуют два типа событий: события со сбросом вручную и с автоматическим сбросом.

Сброс – это перевод события в занятое состояние, то есть в состояние non-signaled.

CreateEvent(…). В качестве параметров указываются имя события, тип и начальное состояние.





Дата публикования: 2014-11-03; Прочитано: 440 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...