Изучая основные понятия ОС, я наткнулся на этот код в разделе «Критические региональные конструкции на языках программирования высокого уровня».Это было дано Хоаром в 1973 году. Я искал в Интернете, но не смог найти никаких ссылок, касающихся этого.Я сомневаюсь, почему есть две очереди: первая задержка и вторая задержка?Будет ли работать только одна очередь?
Конструкция:
region x when (B) S;
С каждой общей переменной связаны следующие переменные:
semaphore mutex, first-delay, second-delay;
int first-count, second-count;
Мьютекс семафора инициализируется равным 1;семафоры first-delay и second-delay инициализируются в 0. Целые числа first -count и second- count инициализируются в 0
код:
wait (mutex) ;
while (!B) {
first-count++;
if (second-count > 0)
signal (second-delay) ;
else
signal (mutex) ;
wait (first-delay) ;
first-count--;
second-count++ ;
if (first-count > 0)
signal (first-delay) ;
else
signal(second-delay);
wait (second-delay) ;
second-count-- ;
}
S:
if (first-count > 0)
signal (first-delay) ;
else if (second-count > 0)
signal( second-delay) ;
else
signal(mutex);