Я пытаюсь упорядочить N процессов, используя только семафоры (без мьютекса).
P1 -> P2 -> P3 -> ... -> Pn
Я занимаюсь этой проблемой:
, если вы звоните:
s = 1;
P1 {
wait(s1)
...
signal(s1)
}
P2 {
wait(s1)
...
signal(s1)
}
Как предотвратить, чтобы он не начал зацикливаться в одном процессе?Как один процесс, который выпустил семафор, не возьмет его снова?Мне нужны все процессы, чтобы в конечном итоге получить ход.
Буду также признателен за любые предложения о том, как решить проблему такого рода (синхронизация N процессов) ТОЛЬКО с использованием семафоров, без использования N семафоров, я прочитал, что возможный минимум равен 3.
Спасибо.