IPC:共享内存终止进程通知

时间:2012-01-31 16:31:15

标签: synchronization ipc shared-memory

在共享内存系统中,当两个进程共享一个共享内存系统时,一个进程被终止后,共享内存系统如何通知其他正在运行的进程被杀死进程?

2 个答案:

答案 0 :(得分:1)

共享内存,顾名思义,是一个内存,一个被动对象。您需要使用互斥锁来跟踪另一个应用程序的活动。每个应用程序都会创建自己的互斥锁,并等待另一个进程的互斥。如果应用程序终止,则互斥锁状态将变为Abandoned。

答案 1 :(得分:1)

一种方法是让父/控制进程将所有其他进程作为子进程启动。当任何一个孩子死亡时,父母将收到SIGCHLD并且能够以理智的方式处理共享内存/资源的清理。

PostgreSQL遵循此设计模式及其postmaster和worker进程。

请注意,在大多数Unix系统上,在进程死亡期间,操作系统不会更改/解锁互斥锁。信号量提供UNDO功能,但它们肯定比互斥量重得多。 YMMV。