如果在将信号量的值从 1 减少到 0 后进程停止,根据我的理解,信号量的值保持为 0。
如果相同的进程再次出现并尝试重新获取相同的信号量,它将永远阻塞。
如果我的进程异常停机,有没有办法在递减信号量值后将其重置为 1?
如果在将信号量的值从 1 减少到 0 后进程停止,根据我的理解,信号量的值保持为 0。
如果相同的进程再次出现并尝试重新获取相同的信号量,它将永远阻塞。
如果我的进程异常停机,有没有办法在递减信号量值后将其重置为 1?
我假设您正在为信号量使用标准的 semctl()/semop() API。
有一个名为 SEM_UNDO 的标志可用,如果您的进程终止,它将告诉内核重置信号量的值。您需要在 semop( ) 调用中使用它。
更多信息在这里:http ://beej.us/guide/bgipc/output/html/multipage/semaphores.html