我需要为进程同步原语设计一个包装器,它的作用类似于一个信号量,假设限制为1(这样只有一个客户端可以同时锁定它)。如果这是唯一的要求,那么我可以只使用命名信号量。但我也想知道,在客户端无法锁定原语的情况下,实际上是谁锁定了它。最好的方法是知道锁定进程id。我知道如何在使用semctl和GETPID的POSIX系统上实现这一点,但是Windows没有公开任何类似的东西。我也知道我可以通过文件轻松实现这一点(例如,使用共享的读和非共享的写权限打开一个已知文件-当锁定客户端创建该文件并写入时,它是PID,以便其他人可以读取它),但如果可能的话,我希望使用实际的操作系统API原语而不是文件系统。这个是可能的吗?
发布于 2019-06-20 18:23:31
在Windows中有一个Wait Chain Traversal,可以让你看到谁锁定了什么。
https://stackoverflow.com/questions/56682052
复制相似问题