История изменений
Исправление DRVTiny, (текущая версия) :
Если да, то выбора быть не может, синхронная запись в файл всё залочит при затупах диска.
Просто вспомни о том, что в асинхронном приложении абсолютно любой «синхронный» код всё лочит: захотел посчитать факториал - «всё залочил», а потом вдруг в цикле дорогостоящим интерпретируемым кодом объёмную структуру данных поменять захотел - аналогично, всё залочил. Тогда уж надо пропагандировать AnyEvent->idle - т.е. обработку чего бы то ни было тогда и только тогда, когда никакие иные события процесс не обрабатывает. Все эти чудесные асинхронные коллбеки - они же просто выстраиваются в цепочку, и если событие Б наступило в тот момент, когда событие А ещё отрабатывается колббеком - можно с таким же успехом считать, что обработка события Б была заблокирована коллбеком обработки события А.
В общем-то любой Perl'овый код, который не выглядит как одна большая цепочка в духе Mojo::IOLoop::Delay с прилепленными где-то сбоку обработчиками состояния Idle - является, мягко говоря, не вполне асинхронным.
Собственно, именно по этой причине в приложениях на Си для обработки асинхронных событий часто используются треды. Но мы-то знаем, почём треды Perl'а...
Исходная версия DRVTiny, :
Если да, то выбора быть не может, синхронная запись в файл всё залочит при затупах диска.
Просто вспомни о том, что в асинхронном приложении абсолютно любой «синхронный» код всё лочит: захотел посчитать факториал - «всё залочил», а потом вдруг в цикле дорогостоящим интерпретируемым кодом объёмную структуру данных поменять захотел - аналогично, всё залочил. Тогда уж надо пропагандировать AnyEvent->idle - т.е. обработку чего бы то ни было тогда и только тогда, когда никакие иные события процесс не обрабатывает.
Проще говоря, любой Perl'овый код, который не выглядит как одна большая цепочка в духе Mojo::IOLoop::Delay - является, мягко говоря, не вполне асинхронным.