```{index} single: Coro::EV ``` # Coro::EV ```{pperl-module-badges} Coro::EV ``` `Coro::EV` - run Coro on the EV event loop. ```perl use Coro; use Coro::EV; async { Coro::EV::timer_once 0.5; print "half a second later\n" }; EV::run; # or let Coro::AnyEvent drive it ``` Loading `Coro::EV` makes EV's loop and Coro's scheduler cooperate: before EV blocks for events it runs every ready coroutine, and when a coroutine becomes ready while EV sleeps, EV wakes up for it. That is what lets code in the linear Coro style wait on sockets and timers through EV - directly, or through `Coro::AnyEvent`, `Coro::Handle` and `Coro::Socket`, which use it when EV is the event loop. `Coro::EV::timer_once $seconds` suspends the current coroutine for that long; `Coro::EV::timed_io_once $fh, $events, $timeout` waits for a filehandle to become readable or writable (`EV::READ`, `EV::WRITE`) and returns the events that occurred, or 0 on timeout. This is a native implementation of the XS half of Coro 6.57's `Coro::EV`, on the native [EV](EV) module; its `Coro/EV.pm` is used unchanged. ## Differences from upstream None.