Редактирование: Операционные системы/Взаимодействие процессов. Классические задачи синхронизации процессов

Материал из 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(); /* некритическая секция */
+
use_data_read(); /* некритическая секция */
}
}
}
}

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы