```{index} single: EV::Loop ``` # EV::Loop ```{pperl-module-badges} EV::Loop ``` An event loop of your own, beside the default one: `EV::Loop->new` makes one, and `EV::default_loop` returns the default loop as an `EV::Loop` too. An `EV::Loop` has, as methods, the `EV::` functions that work on a loop: `$loop->run`, `$loop->now`, `$loop->timer(...)`, `$loop->io(...)` and so on, each doing for this loop what the `EV::` function does for the default loop - see those for the details. A loop lives as long as the object, or a watcher on it, does. A loop of your own may use another backend than the default loop (`EV::BACKEND_*` flags), or serve part of a program separately. Child process watchers work only on the default loop, and a signal can be watched by one loop at a time. After `fork`, the child must call `$loop->loop_fork` before using such a loop, unless it was made with `EV::FLAG_FORKCHECK`. ## Synopsis ```perl my $loop = EV::Loop->new; my $t = $loop->timer(1, 0, sub { print "tick\n"; $loop->break }); $loop->run; ``` ## Functions ### Loops #### `new` Make a new event loop: `EV::Loop->new`, or `EV::Loop->new($flags)` with `EV::BACKEND_*` bits to choose its backends and `EV::FLAG_*` bits (`EV::FLAG_FORKCHECK` to recover from `fork` by itself, `EV::FLAG_NOENV` to ignore `LIBEV_FLAGS`). Undef when no requested backend works. #### `loop_fork` Prepare the loop for use in a child process after `fork`: call it in the child before running the loop again. Loops made with `EV::FLAG_FORKCHECK`, and the default loop, do it by themselves. ### Running the loop #### `iteration` How many times this loop has waited for events, as `EV::iteration`; `loop_count` is its old name. Also available as `EV::Loop::loop_count`. #### `depth` How many `run` calls of this loop are in progress, as `EV::depth`; `loop_depth` is its old name. Also available as `EV::Loop::loop_depth`. #### `loop` Run this loop: `$loop->run`, `$loop->run(EV::RUN_ONCE)`, `$loop->run(EV::RUN_NOWAIT)`, as `EV::run` runs the default loop. True when it returned with work left. `loop` is its old name. Also available as `EV::Loop::run`. #### `break` Make this loop's `run` return, as `EV::break`: `$loop->break`, `$loop->break(EV::BREAK_ALL)`. `unloop` is its old name. Also available as `EV::Loop::unloop`. ### Watchers #### `io` An I/O watcher on this loop: `$loop->io($fh, EV::READ, sub { ... })`, as `EV::io`; `io_ns` makes it stopped. Also available as `EV::Loop::io_ns`. #### `timer` A timer on this loop: `$loop->timer($after, $repeat, sub { ... })`, as `EV::timer`; `timer_ns` makes it stopped. Also available as `EV::Loop::timer_ns`. #### `periodic` A wall-clock timer on this loop: `$loop->periodic($at, $interval, $reschedule_cb, sub { ... })`, as `EV::periodic`; `periodic_ns` makes it stopped. Also available as `EV::Loop::periodic_ns`. #### `signal` A signal watcher on this loop: `$loop->signal('HUP', sub { ... })`, as `EV::signal`; `signal_ns` makes it stopped. A signal can be watched by one loop at a time. Also available as `EV::Loop::signal_ns`. #### `idle` An idle watcher on this loop: `$loop->idle(sub { ... })`, as `EV::idle`; `idle_ns` makes it stopped. Also available as `EV::Loop::idle_ns`. #### `prepare` A prepare watcher on this loop, as `EV::prepare`; `prepare_ns` makes it stopped. Also available as `EV::Loop::prepare_ns`. #### `check` A check watcher on this loop, as `EV::check`; `check_ns` makes it stopped. Also available as `EV::Loop::check_ns`. #### `fork` A fork watcher on this loop, as `EV::fork`; `fork_ns` makes it stopped. Also available as `EV::Loop::fork_ns`. #### `child` A child process watcher: `$loop->child($pid, $trace, sub { ... })`, as `EV::child`; `child_ns` makes it stopped. Only the default loop can watch children: call it on `EV::default_loop`. Also available as `EV::Loop::child_ns`. #### `stat` A file status watcher on this loop: `$loop->stat($path, $interval, sub { ... })`, as `EV::stat`; `stat_ns` makes it stopped. Also available as `EV::Loop::stat_ns`. #### `embed` Embed another loop in this one: `$loop->embed($other)`, as `EV::embed`; `embed_ns` makes the watcher stopped. Also available as `EV::Loop::embed_ns`. #### `async` An async watcher on this loop, as `EV::async`; `async_ns` makes it stopped. Also available as `EV::Loop::async_ns`. #### `once` Wait once on this loop for a handle, a timeout, or the first of the two: `$loop->once($fh, EV::READ, 10, sub { my ($revents) = @_; ... })`, as `EV::once`. ### Time #### `now` The time this loop's current iteration began, as `EV::now`. #### `now_update` Set this loop's time to the time now, as `EV::now_update`. #### `suspend` Pause this loop's clock, as `EV::suspend`; only `resume` may follow. #### `resume` Restart this loop's clock after `suspend`, as `EV::resume`. ### Events #### `feed_fd_event` Act as if a file descriptor had become ready, for this loop's watchers, as `EV::feed_fd_event`. #### `pending_count` How many of this loop's watchers are pending, as `EV::pending_count`. #### `invoke_pending` Call the callbacks of this loop's pending watchers now, as `EV::invoke_pending`. ### Tuning #### `set_io_collect_interval` Make this loop wait at least this long between polls for I/O, as `EV::set_io_collect_interval`. #### `set_timeout_collect_interval` Let this loop's timers that expire close together fire in one wakeup, as `EV::set_timeout_collect_interval`. #### `backend` The backend this loop waits with, one `EV::BACKEND_*` bit. #### `loop_verify` Check this loop's internal data, aborting if it is corrupt, as `EV::verify`; `loop_verify` is its old name. Also available as `EV::Loop::verify`.