IPC: Уведомление об уничтожении общей памяти - PullRequest
2 голосов
/ 31 января 2012

В системе с разделяемой памятью, когда два процесса совместно используют систему с общей памятью, после того, как один процесс будет завершен, как другой запущенный процесс будет уведомлен об остановленном процессе системой с общей памятью?

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Один из способов заключается в том, чтобы родительский / управляющий процесс запускал все остальные процессы как дочерние. Когда любой ребенок умирает, родитель получит SIGCHLD и сможет обрабатывать общую память / ресурсы в здравом порядке.

PostgreSQL следует этому шаблону проектирования со своими postmaster и рабочими процессами.

Обратите внимание, что в большинстве систем Unix мьютексы не будут изменяться / разблокироваться ОС во время остановки процесса. Семафоры предлагают функцию UNDO, но они по общему признанию намного тяжелее мьютексов. YMMV.

1 голос
/ 31 января 2012

Общая память, как следует из названия, - это память , пассивный объект.Вам нужно использовать мьютекс для отслеживания активности другого приложения.Каждое приложение создает свой мьютекс и ожидает другого процесса.Если приложение завершается, состояние мьютекса превращается в Прерванный.

...