我正在将一个 Windows 应用程序移植到 Linux,但我遇到了同步问题。
在 Windows 中,我使用名为 mutex 的系统级来同步对共享内存块的访问。
我如何在 Linux 中模拟它?我使用 semget 创建了一个 SystemV 信号量。问题是它不是可重入的,如果我已经持有它,它会阻塞,这与 Windows 不同。我可以向它添加一个引用计数,但是我需要同步对它的访问,这意味着另一个(这次仅针对当前进程)互斥体。
是否有某个类提供可重入进程间锁(可能在 Boost 中)?
顺便说一句,使用文件锁是不可接受的,因为它可能太慢了(我需要两个进程之间的超低延迟通信)。