Я не совсем понимаю зачем это может быть нужно на уровне модуля, 
но на уровне объекта есть аналог 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

Ответить