我正在开发一种在Linux上使用共享内存的两个或多个进程之间交换数据的机制。问题是需要一定程度的并发控制来保持共享内存本身的数据完整性,并且正如我在某个时间或其他地方所指出的那样,我的进程可能会被杀死/崩溃,所以常见的锁机制不工作,因为它们可能会留下内存处于“锁定”状态并在临终之后,使其他进程等待锁被释放。共享内存一致性的锁定机制
因此,做了一些研究后,我发现System V信号量有一个名为SEM_UNDO的标志,当程序失败时它可以恢复锁定状态,但这并不保证能正常工作。另一种选择是监视可能使用共享内存的所有进程的PID,并在发生不愉快事件时对其进行一些控制,但我不确定这是否是解决我的问题的正确方法。
任何想法?? :)
编辑:为了解释的目的,我们的应用程序需要某种类型的IPC机制尽可能最小的延迟。所以,我也开放了可以处理这一要求的机制。
另一种方法是不使用共享内存 - 我从来没有理解它似乎对程序员的可怕魅力。还有很多其他的IPC机制(一些在共享内存上预先构建和测试过),那么为什么不使用它们呢? – 2010-06-18 15:07:18
为了表现。我们的应用程序需要处理微秒级的延迟。有IPC机制可以实现这种性能? – scooterman 2010-06-18 16:42:04
@scooterman您正在使用哪种实时Linux变体? – 2010-06-18 16:47:59