LINUX.ORG.RU

Shared memory


0

0

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

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

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

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

anonymous

Re: Shared memory

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

anonymous ()
Ответ на: Re: Shared memory от anonymous

Re: Re: Shared memory

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

anonymous ()
Ответ на: Re: Re: Shared memory от anonymous

Re: Re: Re: Shared memory

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

NikZ ()

Re: Shared memory

Ну хорошо!

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

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

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

Как тут быть?

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

anonymous ()

Re: Shared memory

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

NikZ ()
Ответ на: Re: Re: Shared memory от anonymous

Re: Re: Re: Shared memory

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

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