2013-08-04 2 views
0

Это может быть тривиальная проблема, но я не мог найти четкого ответа. Как вы можете сделать два процесса по очереди, используя только семафоры? Я не хочу использовать сон или другие МПК. Результат должен быть что-то вроде:Поворачивать с помощью семафоров

Process 1 did something 
Process 2 did something 
Process 1 did something 
Process 2 did something 
Process 1 did something 
Process 2 did something 
Process 1 did something 
Process 2 did something 

ответ

1

Вам нужно два семафора, по одному для каждого процесса, позволяет сказать, что S1 и S2. Последовательность взаимодействия между процессами P1 и P2 будет следующей:

  1. P1 ждет на S1, P2 ждет на S2.
  2. Допустим, что первоначально S1 открыт, S2 закрыт.
  3. P1 делает свою работу - закрывает S1, S2 открывает и ждет на S1
  4. P2 делает свою работу - закрывает S2, S1 открывается, и ожидает на S2
  5. начать с 3.
Смежные вопросы