我知道SEM_UNDO标志在进程终止后撤消操作 但我想知道如何在我的程序中证明它。
示例:
Semaphore A (process 1) has value = 1;
Semaphore A (process 1) wait.
Semaphore A (process 2) is decrementing (WITH FLAG = SEM_UNDO).
Sempahore A (process 1) has value = 0;
Process 2 end.
semaphore a (process 1) has value = 1 ? (undo decrementing)
答案 0 :(得分:2)
i)您将看到进程A将获得一次信号量,然后再次等待。 (因为进程B退出并将信号量值再次设置为1.)
ii)现在,更改步骤3而不是立即退出,放置sleep(some_time)
。在这种情况下,您将看到进程A连续不断地获取信号量,直到有人再次设置除0之外的信号量值。因为进程B没有退出并且无法设置回1。