LINUX.ORG.RU

Fork + reference в Perl


0

0

Имеется хэш, где ключи - строки, а значения - ссылки на массивы строк.

Этот хэш - временный буффер, который 
необходимо сбрасывать в файл, на консоль, в
syslog и куда угодно ещё по прошествии 
заданного периода (60 сек).

Прога читает из сокета udp датаграммы и пишет некую инфу из них в этот хэш.

Операция одновременного сбрасывания буффера
в различные "устройства" достаточно длительная
и следовательно если делать её после 
прошествия 60 секунд, то часть датаграмм 
может потеряться.

Поэтому я хочу создавать новый процесс, в
котором и сбрасывать буфер, а одновременно 
с старом процессе будет работать первичный
сбор данных в буфер(!!!)

ВОПРОС:
После выполнения fork - как два процесса 
будут разделять память в которой хранится
хэш (помните про значения-ссылки в нём).

При чтении новой 60-ти секундной проции 
данных я предварительно обнуляю хэш.
Не получится ли так, что обнулив хэш в 
родителе, я автоматом обнулю его и в потомке
не успев ещё сбросить его в файлы???
 

Re: Fork + reference в Perl

после вызова fork() потомок имеет _копию_ данных.
любые изменения в памяти одним процессом не видны
в другом.

есть, конечно, shared mappings, но у данному случаю
это отношения не имеет.

idle ★★★★★ ()

Re: Fork + reference в Perl

perldoc IPC::Shareable

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