跨平台同步原语,可确定使用它们的PID

时间:2019-06-20 08:32:59

标签: c winapi posix ipc

我需要为进程同步原语设计一个包装,该包装的行为就像一个信号量,限制为1(这样,只有一个客户端可以同时锁定它)。如果这是唯一的要求,那么我可以使用命名信号量。但是我也想知道,在客户端无法锁定原语的情况下,实际上是谁锁定了原语。最好的办法是知道锁定进程的ID。我看到了如何在semctlGETPID的POSIX系统上实现此目标,但是Windows并未公开类似的信息。我还知道,我可以使用文件轻松实现此目的(例如,打开具有共享读取和非共享写入权限的已知文件-锁定客户端时会创建该文件并写入其PID,以便其他人可以读取它),但如果可能的话我想使用实际的OS API原语而不是文件系统。这可能吗?

1 个答案:

答案 0 :(得分:2)

在Windows中,有一个Wait Chain Traversal,可让您查看谁锁定了什么内容。

相关问题