Я пытаюсь определить, имеет ли следующий пример псевдокода взаимное исключение, ограниченное ожидание и прогресс:
Я считаю, что пример имеет взаимное исключение, поскольку переменные turn и flag гарантируют, что только один процесс может быть в CS одновременно.
Когда «поворот» меняется на int противоположного процесса внутри критической секции, есть гарантия, что процесс никогда не будет ждать дольше одного хода для входа в критическую секцию. Таким образом, образец ограничил ожидание.
В чем я не уверен, так это в прогрессе. Мне кажется, что здесь прогресс не гарантирован. Начальное значение turn = 1, поэтому, если поток 2 должен был выполняться первым, он не может быть выполнен. P1 должен был бы go сначала.
Могу ли я сказать, что в этом примере есть только взаимное исключение и ограниченное ожидание? Мой мыслительный процесс неверен для какой-либо из опций?