<div dir="ltr"><br>
</div><div dir="ltr">Спасибо Дмитрий, надо было мне сразу провести аналогию с CLONE)<br>
</div><div dir="ltr"><br>
</div><div dir="ltr"><br>
</div><div class="wps_signature">Отправлено с Mi Phone</div><div class="wps_quotion">29 янв. 2016 г. 23:20 | От: Dmitry Karasik <dmitry@karasik.eu.org> | Сообщение:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Я не совсем понимаю зачем это может быть нужно на уровне модуля, <br>
но на уровне объекта есть аналог CLONE для тредов. Для форков ... ну может<br>
тоже и пригодится в своем роде.</p>
<p dir="ltr"><a href="http://perldoc.perl.org/perlmod.html#Making-your-module-threadsafe">http://perldoc.perl.org/perlmod.html#Making-your-module-threadsafe</a></p>
<p dir="ltr">/dk</p>
<p dir="ltr">On Wed, Jan 27, 2016 at 12:18:47AM +0300, Evgeniy Vansevich wrote:<br>
> <div>Приветствую всех! Буквально несколько часов назад захотелось иметь нечто, называемое child_callback.</div><div>А именно: мы форкаемся, и после форка в чилдах автоматом вызывается некая функция, которая делает всю грязную работу за нас.</div><div>Быстрый поиск сказал, что ничего похожего нет, и как итог сделал сам.</div><div>Сделал 2 версии, первая версия после форка проходится по арене(Devel::Gladiator) и ищет функции AFTER_FORK(для пакетов) и AFTER_FORK_OBJ (для объектов). Которые потом и вызываются.</div><div>И вторая версия, которая хранит в себе "колбэки" которые нужно вызвать после форка, колбэки из модулей сами напихиваем из модулей.</div><div> </div><div>Первая версия: <a href="<a href="https://gist.github.com/kadavr/e46fa7380b610bbf095e">https://gist.github.com/kadavr/e46fa7380b610bbf095e</a>"><a href="https://gist.github.com/kadavr/e46fa7380b610bbf095e">https://gist.github.com/kadavr/e46fa7380b610bbf095e</a></a></div><div>Вторая версия: <a href="<a href="https://gist.github.com/kadavr/dbed30507eceb3509b22">https://gist.github.com/kadavr/dbed30507eceb3509b22</a>"><a href="https://gist.github.com/kadavr/dbed30507eceb3509b22">https://gist.github.com/kadavr/dbed30507eceb3509b22</a></a></div><div> </div><div>Сразу вопросы: Какая реализация вам больше нравится? и нужен ли такой модуль на cpan?.</div><div> </div><div>И моё мнение по поводу этих модулей:</div><div>Плюсы первой версии:</div><div><ol><li>Простой интерфейс - определяем в своём модуле две функции AFTER_FORK и AFTER_FORK_OBJ, в зависимости от ситуации и остальное зависит уже от того, кто использует модуль, - загрузил он его или нет.</li><li>Однозначно живые объекты, и мы никак не влияем на время жизни объекта(Об этом ниже).</li></ol><div>Минусы:</div><div><ol><li>Скорость работы зависит от размера арены(можно ускорить перенеся всю логику в xs).</li></ol><div>Плюсы второй версии:</div><div><ol><li>Элементарная pure perl реализация.</li><li>Скорость работы зависит от кол-ва колбэков.(Их явно меньше, чем sv в арене).</li></ol><div>Минусы</div><div><ol><li>Так как мы используем колбэки, то всё что мы захватим то будет жить ровно до момента выхода.</li><li>Или можно взять weaken и каждый раз проверять "валидность" ссылки.</li></ol><div>Спасибо.</div></div></div><div> </div></div></div><br>
> -- <br>
> <a href="http://Moscow.pm">Moscow.pm</a> mailing list<br>
> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org">http://moscow.pm.org</a><br></p>
<p dir="ltr">-- <br>
Sincerely, <br>
        Dmitry Karasik <br>
<br>
-- <br>
<a href="http://Moscow.pm">Moscow.pm</a> mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org">http://moscow.pm.org</a><br>
</p>
</blockquote></div>