轮流使用信号量

时间:2013-08-04 19:46:55

标签: unix process semaphore

这可能是一个微不足道的问题,但我找不到任何明确的答案。如何仅使用信号量使两个进程轮流进行?我不想使用睡眠或其他IPC。结果应该是这样的:

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 个答案:

答案 0 :(得分: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开始。