如何撤销信号量最新操作的SEM_UNDO?

时间:2014-01-11 01:34:07

标签: linux ipc semaphore

我的问题: A,B - 信号量。

流程循环:

  1. 等待A> = 1,减少A
  2. 做一些计算
  3. 增加B。
  4. 回到1。
  5. 目标:在进程终止后,我需要减少A等于B的增量。

    所以我发现我将在1中添加标志SEM_UNDO,但是它会取消通过该过程对A进行的每次减少。当进程达到4时,如何从1.撤消/撤消SEM_UNDO。?

1 个答案:

答案 0 :(得分:0)

好吧,当我把问题视为“撤消”SEM_UNDO而不是“撤销”它时,我开悟了。

使用带有SEM_UNDO的操作+ x调用semop()后,您可以稍后通过两次操作再次调用 semop()来撤消该SEM_UNDO:

  1. -x with SEM_UNDO
  2. + x没有SEM_UNDO