Приведен следующий алгоритм для задачи производитель-потребитель. Нет пользы от
буфер. Синхронизация должна быть строго последовательной: если производитель произвел,
потребитель должен потреблять и наоборот.
Producer:
while (true)
{
while (turn == CONSUMER);
turn = CONSUMER;
// produce
}
Consumer:
while (true)
{
while (turn == PRODUCER);
turn = PRODUCER;
// consume
}
Переменная int переменная является общей для обоих процессов.
PRODUCER и CONSUMER являются конечными целыми числами и также разделяются со значениями 0 и 1 соответственно.
Начальное значение хода - ПРОИЗВОДИТЕЛЬ.
Оцените правильность двух следующих предложений о данном алгоритме и дайте
краткое объяснение.
1. Алгоритм синхронизирует производителя и потребителя строго последовательно.
2. С этим алгоритмом может произойти тупик.
Как мне показать (доказать) эти два утверждения с использованием сценария?