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



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

进程是循环的:

  1. 等待 A>= 1,递减 A
  2. 做一些计算
  3. 增量 B。
  4. 回到 1。

目标:进程终止后,我需要 A 的递减等于 B 的增量。

所以我想我会在 1 中添加标志SEM_UNDO,但它取消了通过该过程对 A 所做的每一个创建。如何撤销/撤消 1 中的SEM_UNDO。当进程达到 4 时。?

好的,当将问题视为"撤消"SEM_UNDO而不是"撤销"它时,我得到了启发。

使用 SEM_UNDO 操作 +X 调用 semop() 后,稍后可以通过使用两个操作再次调用 semop() 来撤消该SEM_UNDO:

  1. -x 带SEM_UNDO
  2. +x 不带SEM_UNDO

最新更新