logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

AnyEvent::Impl::Glib - AnyEvent adaptor for Glib

Author

        Marc Lehmann <schmorp@schmorp.de>
        http://anyevent.schmorp.de

perl v5.40.0                                       2024-10-20                          AnyEvent::Impl::Glib(3pm)

Description

       This module provides transparent support for AnyEvent. You don't have to do anything to make Glib work
       with AnyEvent except by loading Glib before creating the first AnyEvent watcher.

       Glib is probably the most inefficient event loop that has ever seen the light of the world: Glib not only
       scans all its watchers (really, ALL of them, whether I/O-related, timer-related or what not) during each
       loop iteration, it also does so multiple times and rebuilds the poll list for the kernel each time again,
       dynamically even. Newer versions of libglib fortunately do not call malloc/free on every single watcher
       invocation, though.

       Glib also enforces certain undocumented behaviours, for example, you cannot always remove active child
       watchers, and the conditions on when it is valid to do so are not documented. Of course, if you get it
       wrong, you get "GLib-CRITICAL" messages. This makes it extremely hard to write "correct" glib programs,
       as you have to study the source code to get it right, and hope future versions don't change any
       internals.

       AnyEvent implements the necessary workarounds, at a small performance cost.

       On the positive side, and most importantly, when it works, Glib generally works correctly, no quarrels
       there.

       If you create many watchers (as in: more than two), you might consider one of the Glib::EV, EV::Glib or
       Glib::Event modules that map Glib to other, more efficient, event loops.

       This module uses the default Glib main context for all its watchers.

Name

       AnyEvent::Impl::Glib - AnyEvent adaptor for Glib

See Also

       AnyEvent, Glib.

Synopsis

          use AnyEvent;
          use Glib;

          # this module gets loaded automatically as required

See Also