LINUX.ORG.RU

Shared memory


0

0

Приветствую всех ...

Вопрос по subj ...

Есть многопроцессная задача. Обмен данными ведется через Shared Memory. Есть необходимость периодически менть размер шары, но как то не хочется чтобы все процессы отцеплялись а потом снова подцеплялись к шаре ...

Есть ли способ менять размер шары находу ?

anonymous

Можно сделать заведомо большую область и в начале области помещать ее длину.

anonymous
()
Ответ на: комментарий от anonymous

Тоесть динамически менять размер шары нельзя без переаттачивания ... (

anonymous
()
Ответ на: комментарий от anonymous

во время изменения размера шары, блокируешь все процессы, которые пытаются обратиться шаре

NikZ
()

Ну хорошо!

Я заблокировал процессы, уменьшил шару ... Разблкировал процессы ... А они у меня взяли и пошли в томесто шары , где ее нет уже

Или так Заблокировал процессы, увеличил шару, расшарил процессы ...

А у одного из них размер шары взял и налез на уже существующее адресное пространство ... А ?

Как тут быть?

И можно ли вообще так делать без переаттачивания?

anonymous
()

Ну напиши ты функцию какую-нибудь, которая разруливает такие ситуации, и чтобы твои процессы обращались к памяти через эту функцию, а не напрямую, что-то типа process -> func -> memory, и держи где-нибудь текущий размер шары, чтобы функция понимала, вышла она за размер шары или нет. А зачем вообще периодически менять размер шары, выдели сразу достаточно памяти для каждого процесса (память сейчас недорогая) или тебе памяти жалко. Ты только время будешь терять на изменение размеров шары. - лично мое мнение.

NikZ
()
Ответ на: комментарий от anonymous

ну свое виденье этого вопроса я озвучил :) может кто из местных предложит другое решение.

NikZ
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.