Я пытаюсь проверить правильность этого решения для мьютекса, и мне нужно убедиться, что взаимное исключение, живость и справедливость удовлетворяются. L1 и L2 — это произвольные строки кода. Одновременно запущено 2 процесса. Ниже приведен код процесса i, а код процесса j симметричен.
bool waiting[i] = false;
bool waiting[j] = false;
bool busy = false;
cobegin(process i)
L1: Si(1)
L2: Si(2)
waiting[i] = true;
L3: while (waiting[i] and TST(busy));
L4: [ Critical Section ]
L5: waiting[i] = false;
L6: busy = false;
L7: while(waiting[j];
L8: Go to L2
Я понял, что все три свойства удовлетворены, но мне просто нужно убедиться, что я ничего не пропустил. Можете ли вы найти свойство, которое не устраивает?