1

这可能是一个微不足道的问题,但我找不到任何明确的答案。如何仅使用信号量让两个进程轮流进行?我不想使用睡眠或其他 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
4

1 回答 1

2

您需要两个信号量,一个用于每个进程,比如说 S1 和 S2。进程 P1 和 P2 之间的交互顺序如下:

  1. P1 在 S1 上等待,P2 在 S2 上等待。
  2. 假设最初 S1 是打开的,S2 是关闭的。
  3. P1 完成它的工作 - 关闭 S1,打开 S2,然后等待 S1
  4. P2 完成它的工作 - 关闭 S2,打开 S1,然后等待 S2
  5. 从3重新开始。
于 2013-08-04T19:50:43.703 回答