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

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 92: Строка 92:
void reader (void)
void reader (void)
{
{
-
while (TRUE) /* бесконечный цикл */
+
while (TRUE) /* бесконечный цикл */
-
{
+
{
-
down(&mutex); /* получить эксклюзивный доступ к «rc»*/
+
down(&mutex); /* получить эксклюзивный доступ к «rc»*/
-
rc = rc + 1; /* еще одним читателем больше */
+
rc = rc + 1; /* еще одним читателем больше */
-
if (rc == 1) down(&db); /* если это первый читатель, нужно заблокировать эксклюзивный доступ к базе */
+
if (rc == 1) down(&db); /* если это первый читатель, нужно заблокировать эксклюзивный доступ к базе */
-
up(&mutex); /*освободить ресурс rc */
+
up(&mutex); /*освободить ресурс rc */
-
read_data_base(); /* доступ к данным */
+
read_data_base(); /* доступ к данным */
-
down(&mutex); /*получить эксклюзивный доступ к «rc»*/
+
down(&mutex); /*получить эксклюзивный доступ к «rc»*/
-
rc = rc - 1: /* теперь одним читателем меньше */
+
rc = rc - 1: /* теперь одним читателем меньше */
-
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:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Разделы