我的问题:A,B - 信号量。
进程是循环的:
- 等待 A>= 1,递减 A
- 做一些计算
- 增量 B。
- 回到 1。
目标:进程终止后,我需要 A 的递减等于 B 的增量。
所以我想我会在 1 中添加标志SEM_UNDO,但它取消了通过该过程对 A 所做的每一个创建。如何撤销/撤消 1 中的SEM_UNDO。当进程达到 4 时。?
好的,当将问题视为"撤消"SEM_UNDO而不是"撤销"它时,我得到了启发。
使用 SEM_UNDO 操作 +X 调用 semop() 后,稍后可以通过使用两个操作再次调用 semop() 来撤消该SEM_UNDO:
- -x 带SEM_UNDO
- +x 不带SEM_UNDO