Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 轮流使用信号灯_Unix_Process_Semaphore - Fatal编程技术网

Unix 轮流使用信号灯

Unix 轮流使用信号灯,unix,process,semaphore,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 so

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

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

  • P1在S1上等待,P2在S2上等待
  • 假设一开始S1是打开的,S2是关闭的
  • P1执行其工作-关闭S1、打开S2并等待S1
  • P2执行其工作-关闭S2、打开S1并等待S2
  • 从3点开始