Реализовать менеджер общей памяти в C ++ - PullRequest
2 голосов
/ 09 августа 2011

Я реализовал простой код общей памяти, который разбросан по двум процессам (один действует как писатель, а другие - как читатель). Но я хочу управлять этим кодом SHM (так же, как и менеджером памяти), который работает независимо от каких-либо процессов чтения / записи. Просто давая некоторые крючки / указатели наружу, Может кто-нибудь предложить мне способ для этого. или какой-либо связанный код или ссылки, связанные с этой информацией? Еще один вопрос: Могу ли я использовать процесс Zygote, чтобы это произошло, пожалуйста, предложите?

Ответы [ 2 ]

5 голосов
/ 09 августа 2011

Приложение не может «делиться» своей памятью, используя простые указатели в современной операционной системе. Это то, что требует помощи ОС, и сильно зависит от рассматриваемой ОС. Например, в Linux лучше всего использовать общую память SysV.

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

2 голосов
/ 09 августа 2011

Посмотрите, что Boost.Iterprocess может сделать для вас.Особенно обратите внимание на раздел Управляемые сегменты памяти .

...