Я не совсем понимаю зачем это может быть нужно на уровне модуля, но на уровне объекта есть аналог CLONE для тредов. Для форков ... ну может тоже и пригодится в своем роде.
http://perldoc.perl.org/perlmod.html#Making-your-module-threadsafe /dk On Wed, Jan 27, 2016 at 12:18:47AM +0300, Evgeniy Vansevich wrote: > <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="https://gist.github.com/kadavr/e46fa7380b610bbf095e">https://gist.github.com/kadavr/e46fa7380b610bbf095e</a></div><div>Вторая > версия: <a > href="https://gist.github.com/kadavr/dbed30507eceb3509b22">https://gist.github.com/kadavr/dbed30507eceb3509b22</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> > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org -- Sincerely, Dmitry Karasik -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
