Редактирование: Операционные системы/Взаимодействие процессов. Классические задачи синхронизации процессов
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 93: | Строка 93: | ||
{ | { | ||
while (TRUE) /* бесконечный цикл */ | while (TRUE) /* бесконечный цикл */ | ||
- | + | { | |
down(&mutex); /* получить эксклюзивный доступ к «rc»*/ | down(&mutex); /* получить эксклюзивный доступ к «rc»*/ | ||
rc = rc + 1; /* еще одним читателем больше */ | rc = rc + 1; /* еще одним читателем больше */ | ||
Строка 103: | Строка 103: | ||
if (rc == 0) up(&db); /*если это был последний читатель, разблокировать эксклюзивный доступ к базе данных */ | if (rc == 0) up(&db); /*если это был последний читатель, разблокировать эксклюзивный доступ к базе данных */ | ||
up(&mutex); /*освободить разделяемый ресурс rc */ | up(&mutex); /*освободить разделяемый ресурс rc */ | ||
- | + | use_data_read(); /* некритическая секция */ | |
} | } | ||
} | } |