ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.pm
Revision: 1.168
Committed: Thu Oct 19 18:05:43 2023 UTC (6 months, 3 weeks ago) by root
Branch: MAIN
CVS Tags: HEAD
Changes since 1.167: +3 -3 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 =head1 NAME
2    
3 root 1.20 EV - perl interface to libev, a high performance full-featured event loop
4 root 1.1
5     =head1 SYNOPSIS
6    
7 root 1.98 use EV;
8    
9     # TIMERS
10    
11     my $w = EV::timer 2, 0, sub {
12     warn "is called after 2s";
13     };
14    
15 root 1.168 my $w = EV::timer 0, 3, sub {
16     warn "is called as soon as possible, then every 3s";
17 root 1.98 };
18    
19     undef $w; # destroy event watcher again
20    
21     my $w = EV::periodic 0, 60, 0, sub {
22     warn "is called every minute, on the minute, exactly";
23     };
24    
25     # IO
26    
27     my $w = EV::io *STDIN, EV::READ, sub {
28     my ($w, $revents) = @_; # all callbacks receive the watcher and event mask
29     warn "stdin is readable, you entered: ", <STDIN>;
30     };
31    
32     # SIGNALS
33    
34     my $w = EV::signal 'QUIT', sub {
35     warn "sigquit received\n";
36     };
37    
38     # CHILD/PID STATUS CHANGES
39 root 1.11
40 root 1.168 my $w = EV::child $pid, 0, sub {
41 root 1.98 my ($w, $revents) = @_;
42     my $status = $w->rstatus;
43     };
44 root 1.11
45 root 1.98 # STAT CHANGES
46     my $w = EV::stat "/etc/passwd", 10, sub {
47     my ($w, $revents) = @_;
48     warn $w->path, " has changed somehow.\n";
49     };
50    
51     # MAINLOOP
52 root 1.145 EV::run; # loop until EV::break is called or all watchers stop
53 root 1.135 EV::run EV::RUN_ONCE; # block until at least one event could be handled
54     EV::run EV::RUN_NOWAIT; # try to handle same events, but do not block
55 root 1.2
56 root 1.127 =head1 BEFORE YOU START USING THIS MODULE
57    
58     If you only need timer, I/O, signal, child and idle watchers and not the
59     advanced functionality of this module, consider using L<AnyEvent> instead,
60     specifically the simplified API described in L<AE>.
61    
62     When used with EV as backend, the L<AE> API is as fast as the native L<EV>
63     API, but your programs/modules will still run with many other event loops.
64    
65 root 1.1 =head1 DESCRIPTION
66    
67 root 1.16 This module provides an interface to libev
68 root 1.52 (L<http://software.schmorp.de/pkg/libev.html>). While the documentation
69 root 1.104 below is comprehensive, one might also consult the documentation of
70     libev itself (L<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod> or
71 root 1.105 F<perldoc EV::libev>) for more subtle details on watcher semantics or some
72 root 1.104 discussion on the available backends, or how to force a specific backend
73     with C<LIBEV_FLAGS>, or just about in any case because it has much more
74     detailed information.
75 root 1.1
76 root 1.90 This module is very fast and scalable. It is actually so fast that you
77     can use it through the L<AnyEvent> module, stay portable to other event
78     loops (if you don't rely on any watcher types not available through it)
79     and still be faster than with any other event loop currently supported in
80     Perl.
81    
82 root 1.129 =head2 PORTING FROM EV 3.X to 4.X
83    
84     EV version 4 introduces a number of incompatible changes summarised
85     here. According to the depreciation strategy used by libev, there is a
86     compatibility layer in place so programs should continue to run unchanged
87     (the XS interface lacks this layer, so programs using that one need to be
88     updated).
89    
90     This compatibility layer will be switched off in some future release.
91    
92     All changes relevant to Perl are renames of symbols, functions and
93     methods:
94    
95     EV::loop => EV::run
96     EV::LOOP_NONBLOCK => EV::RUN_NOWAIT
97     EV::LOOP_ONESHOT => EV::RUN_ONCE
98    
99     EV::unloop => EV::break
100     EV::UNLOOP_CANCEL => EV::BREAK_CANCEL
101     EV::UNLOOP_ONE => EV::BREAK_ONE
102     EV::UNLOOP_ALL => EV::BREAK_ALL
103    
104     EV::TIMEOUT => EV::TIMER
105    
106     EV::loop_count => EV::iteration
107     EV::loop_depth => EV::depth
108     EV::loop_verify => EV::verify
109    
110     The loop object methods corresponding to the functions above have been
111     similarly renamed.
112    
113 root 1.106 =head2 MODULE EXPORTS
114    
115     This module does not export any symbols.
116    
117 root 1.1 =cut
118    
119     package EV;
120    
121 root 1.117 use common::sense;
122 root 1.1
123     BEGIN {
124 root 1.166 our $VERSION = '4.34';
125 root 1.1 use XSLoader;
126 root 1.140 local $^W = 0; # avoid spurious warning
127 root 1.1 XSLoader::load "EV", $VERSION;
128     }
129    
130 root 1.49 @EV::IO::ISA =
131 root 1.18 @EV::Timer::ISA =
132     @EV::Periodic::ISA =
133     @EV::Signal::ISA =
134 root 1.56 @EV::Child::ISA =
135     @EV::Stat::ISA =
136 root 1.18 @EV::Idle::ISA =
137     @EV::Prepare::ISA =
138     @EV::Check::ISA =
139 root 1.54 @EV::Embed::ISA =
140 root 1.56 @EV::Fork::ISA =
141 root 1.84 @EV::Async::ISA =
142 root 1.56 "EV::Watcher";
143 root 1.15
144 root 1.72 @EV::Loop::Default::ISA = "EV::Loop";
145    
146 root 1.73 =head1 EVENT LOOPS
147    
148     EV supports multiple event loops: There is a single "default event loop"
149     that can handle everything including signals and child watchers, and any
150     number of "dynamic event loops" that can use different backends (with
151     various limitations), but no child and signal watchers.
152    
153     You do not have to do anything to create the default event loop: When
154     the module is loaded a suitable backend is selected on the premise of
155     selecting a working backend (which for example rules out kqueue on most
156     BSDs). Modules should, unless they have "special needs" always use the
157     default loop as this is fastest (perl-wise), best supported by other
158     modules (e.g. AnyEvent or Coro) and most portable event loop.
159    
160 root 1.79 For specific programs you can create additional event loops dynamically.
161 root 1.73
162 root 1.108 If you want to take advantage of kqueue (which often works properly for
163 root 1.99 sockets only) even though the default loop doesn't enable it, you can
164     I<embed> a kqueue loop into the default loop: running the default loop
165     will then also service the kqueue loop to some extent. See the example in
166     the section about embed watchers for an example on how to achieve that.
167    
168 root 1.73 =over 4
169    
170 root 1.113 =item $loop = new EV::Loop [$flags]
171 root 1.73
172 root 1.104 Create a new event loop as per the specified flags. Please refer to
173     the C<ev_loop_new ()> function description in the libev documentation
174     (L<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#GLOBAL_FUNCTIONS>,
175 root 1.105 or locally-installed as F<EV::libev> manpage) for more info.
176 root 1.73
177     The loop will automatically be destroyed when it is no longer referenced
178     by any watcher and the loop object goes out of scope.
179    
180 root 1.167 If you are not embedding the loop, then using C<EV::FLAG_FORKCHECK>
181 root 1.103 is recommended, as only the default event loop is protected by this
182     module. If you I<are> embedding this loop in the default loop, this is not
183     necessary, as C<EV::embed> automatically does the right thing on fork.
184 root 1.73
185     =item $loop->loop_fork
186    
187     Must be called after a fork in the child, before entering or continuing
188     the event loop. An alternative is to use C<EV::FLAG_FORKCHECK> which calls
189 root 1.96 this function automatically, at some performance loss (refer to the libev
190 root 1.73 documentation).
191    
192 root 1.135 =item $loop->verify
193 root 1.96
194     Calls C<ev_verify> to make internal consistency checks (for debugging
195 root 1.99 libev) and abort the program if any data structures were found to be
196 root 1.96 corrupted.
197    
198 root 1.79 =item $loop = EV::default_loop [$flags]
199    
200 root 1.96 Return the default loop (which is a singleton object). Since this module
201     already creates the default loop with default flags, specifying flags here
202 root 1.99 will not have any effect unless you destroy the default loop first, which
203     isn't supported. So in short: don't do it, and if you break it, you get to
204     keep the pieces.
205 root 1.79
206 root 1.73 =back
207    
208    
209 root 1.8 =head1 BASIC INTERFACE
210 root 1.1
211     =over 4
212    
213 root 1.8 =item $EV::DIED
214    
215     Must contain a reference to a function that is called when a callback
216 root 1.67 throws an exception (with $@ containing the error). The default prints an
217 root 1.8 informative message and continues.
218    
219     If this callback throws an exception it will be silently ignored.
220    
221 root 1.79 =item $flags = EV::supported_backends
222    
223     =item $flags = EV::recommended_backends
224    
225     =item $flags = EV::embeddable_backends
226    
227     Returns the set (see C<EV::BACKEND_*> flags) of backends supported by this
228     instance of EV, the set of recommended backends (supposed to be good) for
229     this platform and the set of embeddable backends (see EMBED WATCHERS).
230    
231 root 1.80 =item EV::sleep $seconds
232    
233     Block the process for the given number of (fractional) seconds.
234    
235 root 1.20 =item $time = EV::time
236    
237     Returns the current time in (fractional) seconds since the epoch.
238    
239 root 1.2 =item $time = EV::now
240    
241 root 1.73 =item $time = $loop->now
242    
243 root 1.20 Returns the time the last event loop iteration has been started. This
244 root 1.108 is the time that (relative) timers are based on, and referring to it is
245 root 1.20 usually faster then calling EV::time.
246    
247 root 1.114 =item EV::now_update
248    
249     =item $loop->now_update
250    
251     Establishes the current time by querying the kernel, updating the time
252     returned by C<EV::now> in the progress. This is a costly operation and
253 root 1.155 is usually done automatically within C<EV::run>.
254 root 1.114
255     This function is rarely useful, but when some event callback runs for a
256     very long time without entering the event loop, updating libev's idea of
257     the current time is a good idea.
258    
259     =item EV::suspend
260    
261     =item $loop->suspend
262    
263     =item EV::resume
264    
265     =item $loop->resume
266    
267     These two functions suspend and resume a loop, for use when the loop is
268     not used for a while and timeouts should not be processed.
269    
270     A typical use case would be an interactive program such as a game: When
271     the user presses C<^Z> to suspend the game and resumes it an hour later it
272     would be best to handle timeouts as if no time had actually passed while
273     the program was suspended. This can be achieved by calling C<suspend>
274     in your C<SIGTSTP> handler, sending yourself a C<SIGSTOP> and calling
275     C<resume> directly afterwards to resume timer processing.
276    
277     Effectively, all C<timer> watchers will be delayed by the time spend
278     between C<suspend> and C<resume>, and all C<periodic> watchers
279     will be rescheduled (that is, they will lose any events that would have
280     occured while suspended).
281    
282     After calling C<suspend> you B<must not> call I<any> function on the given
283     loop other than C<resume>, and you B<must not> call C<resume>
284     without a previous call to C<suspend>.
285    
286     Calling C<suspend>/C<resume> has the side effect of updating the event
287     loop time (see C<now_update>).
288    
289 root 1.73 =item $backend = EV::backend
290    
291     =item $backend = $loop->backend
292 root 1.20
293 root 1.108 Returns an integer describing the backend used by libev (EV::BACKEND_SELECT
294     or EV::BACKEND_EPOLL).
295 root 1.20
296 root 1.138 =item $active = EV::run [$flags]
297 root 1.2
298 root 1.138 =item $active = $loop->run ([$flags])
299 root 1.73
300 root 1.20 Begin checking for events and calling callbacks. It returns when a
301 root 1.149 callback calls EV::break or the flags are nonzero (in which case the
302 root 1.138 return value is true) or when there are no active watchers which reference
303     the loop (keepalive is true), in which case the return value will be
304 root 1.149 false. The return value can generally be interpreted as "if true, there is
305 root 1.138 more work left to do".
306 root 1.2
307 root 1.20 The $flags argument can be one of the following:
308 root 1.2
309 root 1.135 0 as above
310     EV::RUN_ONCE block at most once (wait, but do not loop)
311     EV::RUN_NOWAIT do not block at all (fetch/handle events but do not wait)
312 root 1.2
313 root 1.133 =item EV::break [$how]
314 root 1.2
315 root 1.133 =item $loop->break ([$how])
316 root 1.73
317 root 1.133 When called with no arguments or an argument of EV::BREAK_ONE, makes the
318 root 1.155 innermost call to EV::run return.
319 root 1.2
320 root 1.155 When called with an argument of EV::BREAK_ALL, all calls to EV::run will
321 root 1.133 return as fast as possible.
322    
323     When called with an argument of EV::BREAK_CANCEL, any pending break will
324     be cancelled.
325 root 1.2
326 root 1.135 =item $count = EV::iteration
327 root 1.60
328 root 1.135 =item $count = $loop->iteration
329 root 1.73
330 root 1.60 Return the number of times the event loop has polled for new
331 root 1.108 events. Sometimes useful as a generation counter.
332 root 1.60
333 root 1.48 =item EV::once $fh_or_undef, $events, $timeout, $cb->($revents)
334 root 1.47
335 root 1.73 =item $loop->once ($fh_or_undef, $events, $timeout, $cb->($revents))
336    
337 root 1.47 This function rolls together an I/O and a timer watcher for a single
338     one-shot event without the need for managing a watcher object.
339    
340     If C<$fh_or_undef> is a filehandle or file descriptor, then C<$events>
341     must be a bitset containing either C<EV::READ>, C<EV::WRITE> or C<EV::READ
342     | EV::WRITE>, indicating the type of I/O event you want to wait for. If
343     you do not want to wait for some I/O event, specify C<undef> for
344     C<$fh_or_undef> and C<0> for C<$events>).
345    
346     If timeout is C<undef> or negative, then there will be no
347 root 1.153 timeout. Otherwise an C<EV::timer> with this value will be started.
348 root 1.47
349     When an error occurs or either the timeout or I/O watcher triggers, then
350     the callback will be called with the received event set (in general
351 root 1.77 you can expect it to be a combination of C<EV::ERROR>, C<EV::READ>,
352 root 1.126 C<EV::WRITE> and C<EV::TIMER>).
353 root 1.47
354     EV::once doesn't return anything: the watchers stay active till either
355     of them triggers, then they will be stopped and freed, and the callback
356     invoked.
357    
358 root 1.133 =item EV::feed_fd_event $fd, $revents
359 root 1.65
360 root 1.73 =item $loop->feed_fd_event ($fd, $revents)
361    
362 root 1.65 Feed an event on a file descriptor into EV. EV will react to this call as
363     if the readyness notifications specified by C<$revents> (a combination of
364     C<EV::READ> and C<EV::WRITE>) happened on the file descriptor C<$fd>.
365    
366 root 1.133 =item EV::feed_signal_event $signal
367    
368     Feed a signal event into the default loop. EV will react to this call as
369     if the signal specified by C<$signal> had occured.
370    
371     =item EV::feed_signal $signal
372 root 1.65
373 root 1.133 Feed a signal event into EV - unlike C<EV::feed_signal_event>, this works
374     regardless of which loop has registered the signal, and is mainly useful
375 root 1.158 for custom signal implementations.
376 root 1.65
377 root 1.79 =item EV::set_io_collect_interval $time
378    
379     =item $loop->set_io_collect_interval ($time)
380    
381     =item EV::set_timeout_collect_interval $time
382    
383     =item $loop->set_timeout_collect_interval ($time)
384    
385     These advanced functions set the minimum block interval when polling for I/O events and the minimum
386     wait interval for timer events. See the libev documentation at
387 root 1.104 L<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#FUNCTIONS_CONTROLLING_THE_EVENT_LOOP>
388 root 1.105 (locally installed as F<EV::libev>) for a more detailed discussion.
389 root 1.79
390 root 1.119 =item $count = EV::pending_count
391    
392     =item $count = $loop->pending_count
393    
394     Returns the number of currently pending watchers.
395    
396     =item EV::invoke_pending
397    
398     =item $loop->invoke_pending
399    
400     Invoke all currently pending watchers.
401    
402 root 1.20 =back
403    
404 root 1.65
405 root 1.73 =head1 WATCHER OBJECTS
406 root 1.2
407 root 1.20 A watcher is an object that gets created to record your interest in some
408     event. For instance, if you want to wait for STDIN to become readable, you
409     would create an EV::io watcher for that:
410    
411 root 1.98 my $watcher = EV::io *STDIN, EV::READ, sub {
412     my ($watcher, $revents) = @_;
413     warn "yeah, STDIN should now be readable without blocking!\n"
414     };
415 root 1.2
416 root 1.20 All watchers can be active (waiting for events) or inactive (paused). Only
417     active watchers will have their callbacks invoked. All callbacks will be
418     called with at least two arguments: the watcher and a bitmask of received
419     events.
420    
421     Each watcher type has its associated bit in revents, so you can use the
422     same callback for multiple watchers. The event mask is named after the
423 root 1.108 type, i.e. EV::child sets EV::CHILD, EV::prepare sets EV::PREPARE,
424 root 1.62 EV::periodic sets EV::PERIODIC and so on, with the exception of I/O events
425 root 1.126 (which can set both EV::READ and EV::WRITE bits).
426 root 1.20
427     In the rare case where one wants to create a watcher but not start it at
428     the same time, each constructor has a variant with a trailing C<_ns> in
429     its name, e.g. EV::io has a non-starting variant EV::io_ns and so on.
430    
431     Please note that a watcher will automatically be stopped when the watcher
432 root 1.23 object is destroyed, so you I<need> to keep the watcher objects returned by
433 root 1.20 the constructors.
434    
435 root 1.23 Also, all methods changing some aspect of a watcher (->set, ->priority,
436     ->fh and so on) automatically stop and start it again if it is active,
437     which means pending events get lost.
438    
439 root 1.54 =head2 COMMON WATCHER METHODS
440 root 1.20
441 root 1.54 This section lists methods common to all watchers.
442 root 1.20
443     =over 4
444 root 1.2
445 root 1.20 =item $w->start
446    
447     Starts a watcher if it isn't active already. Does nothing to an already
448     active watcher. By default, all watchers start out in the active state
449     (see the description of the C<_ns> variants if you need stopped watchers).
450    
451     =item $w->stop
452 root 1.2
453 root 1.20 Stop a watcher if it is active. Also clear any pending events (events that
454     have been received but that didn't yet result in a callback invocation),
455 root 1.62 regardless of whether the watcher was active or not.
456 root 1.2
457 root 1.20 =item $bool = $w->is_active
458 root 1.2
459 root 1.20 Returns true if the watcher is active, false otherwise.
460    
461 root 1.30 =item $current_data = $w->data
462    
463     =item $old_data = $w->data ($new_data)
464    
465     Queries a freely usable data scalar on the watcher and optionally changes
466     it. This is a way to associate custom data with a watcher:
467    
468     my $w = EV::timer 60, 0, sub {
469     warn $_[0]->data;
470     };
471     $w->data ("print me!");
472    
473 root 1.20 =item $current_cb = $w->cb
474    
475     =item $old_cb = $w->cb ($new_cb)
476    
477 root 1.23 Queries the callback on the watcher and optionally changes it. You can do
478     this at any time without the watcher restarting.
479    
480     =item $current_priority = $w->priority
481    
482     =item $old_priority = $w->priority ($new_priority)
483    
484     Queries the priority on the watcher and optionally changes it. Pending
485     watchers with higher priority will be invoked first. The valid range of
486 root 1.24 priorities lies between EV::MAXPRI (default 2) and EV::MINPRI (default
487     -2). If the priority is outside this range it will automatically be
488 root 1.23 normalised to the nearest valid priority.
489    
490 root 1.50 The default priority of any newly-created watcher is 0.
491    
492     Note that the priority semantics have not yet been fleshed out and are
493     subject to almost certain change.
494 root 1.20
495 root 1.65 =item $w->invoke ($revents)
496 root 1.20
497     Call the callback *now* with the given event mask.
498    
499 root 1.65 =item $w->feed_event ($revents)
500    
501     Feed some events on this watcher into EV. EV will react to this call as if
502     the watcher had received the given C<$revents> mask.
503    
504     =item $revents = $w->clear_pending
505    
506 root 1.78 If the watcher is pending, this function clears its pending status and
507     returns its C<$revents> bitset (as if its callback was invoked). If the
508 root 1.65 watcher isn't pending it does nothing and returns C<0>.
509    
510 root 1.50 =item $previous_state = $w->keepalive ($bool)
511    
512 root 1.155 Normally, C<EV::run> will return when there are no active watchers
513 root 1.50 (which is a "deadlock" because no progress can be made anymore). This is
514 root 1.124 convenient because it allows you to start your watchers (and your jobs),
515 root 1.155 call C<EV::run> once and when it returns you know that all your jobs are
516 root 1.50 finished (or they forgot to register some watchers for their task :).
517    
518 root 1.77 Sometimes, however, this gets in your way, for example when the module
519 root 1.155 that calls C<EV::run> (usually the main program) is not the same module
520 root 1.50 as a long-living watcher (for example a DNS client module written by
521     somebody else even). Then you might want any outstanding requests to be
522 root 1.155 handled, but you would not want to keep C<EV::run> from returning just
523 root 1.50 because you happen to have this long-running UDP port watcher.
524    
525     In this case you can clear the keepalive status, which means that even
526 root 1.155 though your watcher is active, it won't keep C<EV::run> from returning.
527 root 1.50
528 root 1.108 The initial value for keepalive is true (enabled), and you can change it
529 root 1.50 any time.
530    
531 root 1.62 Example: Register an I/O watcher for some UDP socket but do not keep the
532 root 1.50 event loop from running just because of that watcher.
533    
534     my $udp_socket = ...
535     my $udp_watcher = EV::io $udp_socket, EV::READ, sub { ... };
536 root 1.98 $udp_watcher->keepalive (0);
537 root 1.74
538     =item $loop = $w->loop
539    
540     Return the loop that this watcher is attached to.
541 root 1.20
542 root 1.54 =back
543    
544    
545 root 1.73 =head1 WATCHER TYPES
546 root 1.54
547     Each of the following subsections describes a single watcher type.
548    
549 root 1.62 =head3 I/O WATCHERS - is this file descriptor readable or writable?
550 root 1.54
551     =over 4
552    
553 root 1.20 =item $w = EV::io $fileno_or_fh, $eventmask, $callback
554 root 1.2
555 root 1.20 =item $w = EV::io_ns $fileno_or_fh, $eventmask, $callback
556 root 1.7
557 root 1.76 =item $w = $loop->io ($fileno_or_fh, $eventmask, $callback)
558 root 1.73
559     =item $w = $loop->io_ns ($fileno_or_fh, $eventmask, $callback)
560    
561 root 1.20 As long as the returned watcher object is alive, call the C<$callback>
562 root 1.54 when at least one of events specified in C<$eventmask> occurs.
563 root 1.2
564 root 1.20 The $eventmask can be one or more of these constants ORed together:
565 root 1.2
566     EV::READ wait until read() wouldn't block anymore
567     EV::WRITE wait until write() wouldn't block anymore
568 root 1.7
569 root 1.20 The C<io_ns> variant doesn't start (activate) the newly created watcher.
570 root 1.2
571 root 1.20 =item $w->set ($fileno_or_fh, $eventmask)
572 root 1.10
573 root 1.20 Reconfigures the watcher, see the constructor above for details. Can be
574     called at any time.
575 root 1.10
576 root 1.20 =item $current_fh = $w->fh
577    
578     =item $old_fh = $w->fh ($new_fh)
579    
580     Returns the previously set filehandle and optionally set a new one.
581 root 1.10
582 root 1.20 =item $current_eventmask = $w->events
583    
584     =item $old_eventmask = $w->events ($new_eventmask)
585 root 1.10
586 root 1.20 Returns the previously set event mask and optionally set a new one.
587 root 1.10
588 root 1.54 =back
589    
590    
591     =head3 TIMER WATCHERS - relative and optionally repeating timeouts
592    
593     =over 4
594 root 1.10
595 root 1.20 =item $w = EV::timer $after, $repeat, $callback
596 root 1.2
597 root 1.20 =item $w = EV::timer_ns $after, $repeat, $callback
598 root 1.2
599 root 1.73 =item $w = $loop->timer ($after, $repeat, $callback)
600    
601     =item $w = $loop->timer_ns ($after, $repeat, $callback)
602    
603 root 1.150 Calls the callback after C<$after> seconds (which may be fractional or
604     negative). If C<$repeat> is non-zero, the timer will be restarted (with
605     the $repeat value as $after) after the callback returns.
606 root 1.2
607 root 1.20 This means that the callback would be called roughly after C<$after>
608 root 1.39 seconds, and then every C<$repeat> seconds. The timer does his best not
609     to drift, but it will not invoke the timer more often then once per event
610     loop iteration, and might drift in other cases. If that isn't acceptable,
611     look at EV::periodic, which can provide long-term stable timers.
612 root 1.2
613 root 1.39 The timer is based on a monotonic clock, that is, if somebody is sitting
614 root 1.20 in front of the machine while the timer is running and changes the system
615     clock, the timer will nevertheless run (roughly) the same time.
616 root 1.2
617 root 1.20 The C<timer_ns> variant doesn't start (activate) the newly created watcher.
618    
619 root 1.147 =item $w->set ($after, $repeat = 0)
620 root 1.20
621 root 1.54 Reconfigures the watcher, see the constructor above for details. Can be called at
622 root 1.20 any time.
623    
624     =item $w->again
625    
626 root 1.147 =item $w->again ($repeat)
627    
628 root 1.20 Similar to the C<start> method, but has special semantics for repeating timers:
629    
630 root 1.39 If the timer is active and non-repeating, it will be stopped.
631    
632 root 1.20 If the timer is active and repeating, reset the timeout to occur
633     C<$repeat> seconds after now.
634    
635 root 1.39 If the timer is inactive and repeating, start it using the repeat value.
636 root 1.20
637     Otherwise do nothing.
638    
639     This behaviour is useful when you have a timeout for some IO
640     operation. You create a timer object with the same value for C<$after> and
641     C<$repeat>, and then, in the read/write watcher, run the C<again> method
642     on the timeout.
643    
644 root 1.147 If called with a C<$repeat> argument, then it uses this a timer repeat
645     value.
646    
647     =item $after = $w->remaining
648    
649     Calculates and returns the remaining time till the timer will fire.
650    
651 root 1.163 =item $repeat = $w->repeat
652    
653     =item $old_repeat = $w->repeat ($new_repeat)
654 root 1.162
655     Returns the current value of the repeat attribute and optionally sets a
656     new one. Setting the new one will not restart the watcher - if the watcher
657     is active, the new repeat value is used whenever it expires next.
658    
659 root 1.54 =back
660    
661    
662     =head3 PERIODIC WATCHERS - to cron or not to cron?
663    
664     =over 4
665 root 1.20
666 root 1.30 =item $w = EV::periodic $at, $interval, $reschedule_cb, $callback
667 root 1.20
668 root 1.30 =item $w = EV::periodic_ns $at, $interval, $reschedule_cb, $callback
669    
670 root 1.73 =item $w = $loop->periodic ($at, $interval, $reschedule_cb, $callback)
671    
672     =item $w = $loop->periodic_ns ($at, $interval, $reschedule_cb, $callback)
673    
674 root 1.30 Similar to EV::timer, but is not based on relative timeouts but on
675     absolute times. Apart from creating "simple" timers that trigger "at" the
676     specified time, it can also be used for non-drifting absolute timers and
677     more complex, cron-like, setups that are not adversely affected by time
678     jumps (i.e. when the system clock is changed by explicit date -s or other
679     means such as ntpd). It is also the most complex watcher type in EV.
680    
681     It has three distinct "modes":
682    
683     =over 4
684 root 1.2
685 root 1.30 =item * absolute timer ($interval = $reschedule_cb = 0)
686 root 1.2
687 root 1.30 This time simply fires at the wallclock time C<$at> and doesn't repeat. It
688     will not adjust when a time jump occurs, that is, if it is to be run
689     at January 1st 2011 then it will run when the system time reaches or
690     surpasses this time.
691 root 1.2
692 root 1.85 =item * repeating interval timer ($interval > 0, $reschedule_cb = 0)
693 root 1.2
694 root 1.30 In this mode the watcher will always be scheduled to time out at the
695 root 1.151 next C<$at + N * $interval> time (for the lowest integer N) and then repeat,
696     regardless of any time jumps. Note that, since C<N> can be negative, the
697     first trigger can happen before C<$at>.
698 root 1.30
699     This can be used to create timers that do not drift with respect to system
700     time:
701    
702     my $hourly = EV::periodic 0, 3600, 0, sub { print "once/hour\n" };
703    
704     That doesn't mean there will always be 3600 seconds in between triggers,
705 root 1.141 but only that the the callback will be called when the system time shows a
706 root 1.30 full hour (UTC).
707 root 1.2
708 root 1.7 Another way to think about it (for the mathematically inclined) is that
709 root 1.30 EV::periodic will try to run the callback in this mode at the next
710     possible time where C<$time = $at (mod $interval)>, regardless of any time
711     jumps.
712    
713     =item * manual reschedule mode ($reschedule_cb = coderef)
714    
715 root 1.37 In this mode $interval and $at are both being ignored. Instead, each
716     time the periodic watcher gets scheduled, the reschedule callback
717     ($reschedule_cb) will be called with the watcher as first, and the current
718     time as second argument.
719 root 1.30
720 root 1.31 I<This callback MUST NOT stop or destroy this or any other periodic
721 root 1.94 watcher, ever, and MUST NOT call any event loop functions or methods>. If
722     you need to stop it, return 1e30 and stop it afterwards. You may create
723 root 1.153 and start an C<EV::prepare> watcher for this task.
724 root 1.30
725     It must return the next time to trigger, based on the passed time value
726 root 1.94 (that is, the lowest time value larger than or equal to to the second
727     argument). It will usually be called just before the callback will be
728     triggered, but might be called at other times, too.
729 root 1.30
730     This can be used to create very complex timers, such as a timer that
731 root 1.152 triggers on each midnight, local time (actually one day after the last
732     midnight, to keep the example simple):
733 root 1.30
734     my $daily = EV::periodic 0, 0, sub {
735     my ($w, $now) = @_;
736    
737     use Time::Local ();
738     my (undef, undef, undef, $d, $m, $y) = localtime $now;
739 root 1.152 Time::Local::timelocal_nocheck 0, 0, 0, $d + 1, $m, $y
740 root 1.30 }, sub {
741     print "it's midnight or likely shortly after, now\n";
742     };
743 root 1.7
744 root 1.30 =back
745 root 1.20
746     The C<periodic_ns> variant doesn't start (activate) the newly created watcher.
747 root 1.2
748 root 1.30 =item $w->set ($at, $interval, $reschedule_cb)
749 root 1.11
750 root 1.54 Reconfigures the watcher, see the constructor above for details. Can be called at
751 root 1.20 any time.
752    
753 root 1.30 =item $w->again
754    
755     Simply stops and starts the watcher again.
756    
757 root 1.71 =item $time = $w->at
758    
759     Return the time that the watcher is expected to trigger next.
760    
761 root 1.163 =item $offset = $w->offset
762    
763     =item $old_offset = $w->offset ($new_offset)
764 root 1.162
765     Returns the current value of the offset attribute and optionally sets a
766     new one. Setting the new one will not restart the watcher - if the watcher
767     is active, the new offset value is used whenever it expires next.
768    
769 root 1.163 =item $interval = $w->interval
770    
771     =item $old_interval = $w->interval ($new_interval)
772 root 1.162
773     See above, for the interval attribute.
774    
775 root 1.163 =item $reschedule_cb = $w->reschedule_cb
776    
777     =item $old_reschedule_cb = $w->reschedule_cb ($new_reschedule_cb)
778 root 1.162
779     See above, for the reschedule callback.
780    
781 root 1.54 =back
782    
783    
784     =head3 SIGNAL WATCHERS - signal me when a signal gets signalled!
785    
786     =over 4
787 root 1.20
788     =item $w = EV::signal $signal, $callback
789    
790     =item $w = EV::signal_ns $signal, $callback
791 root 1.11
792 root 1.122 =item $w = $loop->signal ($signal, $callback)
793    
794     =item $w = $loop->signal_ns ($signal, $callback)
795    
796 root 1.54 Call the callback when $signal is received (the signal can be specified by
797     number or by name, just as with C<kill> or C<%SIG>).
798 root 1.2
799 root 1.122 Only one event loop can grab a given signal - attempting to grab the same
800     signal from two EV loops will crash the program immediately or cause data
801     corruption.
802    
803 root 1.11 EV will grab the signal for the process (the kernel only allows one
804 root 1.20 component to receive a signal at a time) when you start a signal watcher,
805     and removes it again when you stop it. Perl does the same when you
806 root 1.54 add/remove callbacks to C<%SIG>, so watch out.
807 root 1.20
808     You can have as many signal watchers per signal as you want.
809 root 1.2
810 root 1.20 The C<signal_ns> variant doesn't start (activate) the newly created watcher.
811 root 1.2
812 root 1.20 =item $w->set ($signal)
813 root 1.2
814 root 1.54 Reconfigures the watcher, see the constructor above for details. Can be
815     called at any time.
816 root 1.20
817 root 1.22 =item $current_signum = $w->signal
818    
819     =item $old_signum = $w->signal ($new_signal)
820    
821     Returns the previously set signal (always as a number not name) and
822     optionally set a new one.
823    
824 root 1.54 =back
825    
826    
827     =head3 CHILD WATCHERS - watch out for process status changes
828    
829     =over 4
830 root 1.20
831 root 1.82 =item $w = EV::child $pid, $trace, $callback
832 root 1.20
833 root 1.82 =item $w = EV::child_ns $pid, $trace, $callback
834 root 1.20
835 root 1.82 =item $w = $loop->child ($pid, $trace, $callback)
836 root 1.73
837 root 1.82 =item $w = $loop->child_ns ($pid, $trace, $callback)
838 root 1.73
839 root 1.82 Call the callback when a status change for pid C<$pid> (or any pid
840     if C<$pid> is 0) has been received (a status change happens when the
841     process terminates or is killed, or, when trace is true, additionally when
842     it is stopped or continued). More precisely: when the process receives
843 root 1.54 a C<SIGCHLD>, EV will fetch the outstanding exit/wait status for all
844 root 1.20 changed/zombie children and call the callback.
845    
846 root 1.54 It is valid (and fully supported) to install a child watcher after a child
847     has exited but before the event loop has started its next iteration (for
848     example, first you C<fork>, then the new child process might exit, and
849     only then do you install a child watcher in the parent for the new pid).
850    
851     You can access both exit (or tracing) status and pid by using the
852     C<rstatus> and C<rpid> methods on the watcher object.
853 root 1.20
854 root 1.54 You can have as many pid watchers per pid as you want, they will all be
855     called.
856 root 1.20
857     The C<child_ns> variant doesn't start (activate) the newly created watcher.
858    
859 root 1.82 =item $w->set ($pid, $trace)
860 root 1.1
861 root 1.54 Reconfigures the watcher, see the constructor above for details. Can be called at
862 root 1.20 any time.
863 root 1.2
864 root 1.22 =item $current_pid = $w->pid
865    
866     Returns the previously set process id and optionally set a new one.
867    
868 root 1.27 =item $exit_status = $w->rstatus
869    
870     Return the exit/wait status (as returned by waitpid, see the waitpid entry
871     in perlfunc).
872    
873     =item $pid = $w->rpid
874    
875     Return the pid of the awaited child (useful when you have installed a
876     watcher for all pids).
877    
878 root 1.166 =item EV::Child::reinit [EXPERIMENTAL]
879    
880     Internally, libev installs a signal handler for C<SIGCHLD>. Unfortunately,
881     a lot of Perl code does soemthing like C<< local $SIG{CHLD} >>, which,
882     unfortunately, is broken and will not restore the signal handler.
883    
884     If this has happened, you can call this function to stop/rrestart the
885     internal libev watcher, which will reset the signal handler.
886    
887     Note that this is an experimental function, whose interface might change.
888    
889 root 1.54 =back
890    
891    
892 root 1.56 =head3 STAT WATCHERS - did the file attributes just change?
893    
894     =over 4
895    
896     =item $w = EV::stat $path, $interval, $callback
897    
898     =item $w = EV::stat_ns $path, $interval, $callback
899    
900 root 1.73 =item $w = $loop->stat ($path, $interval, $callback)
901    
902     =item $w = $loop->stat_ns ($path, $interval, $callback)
903    
904 root 1.56 Call the callback when a file status change has been detected on
905     C<$path>. The C<$path> does not need to exist, changing from "path exists"
906     to "path does not exist" is a status change like any other.
907    
908     The C<$interval> is a recommended polling interval for systems where
909     OS-supported change notifications don't exist or are not supported. If
910     you use C<0> then an unspecified default is used (which is highly
911     recommended!), which is to be expected to be around five seconds usually.
912    
913     This watcher type is not meant for massive numbers of stat watchers,
914     as even with OS-supported change notifications, this can be
915     resource-intensive.
916    
917     The C<stat_ns> variant doesn't start (activate) the newly created watcher.
918    
919 root 1.57 =item ... = $w->stat
920    
921     This call is very similar to the perl C<stat> built-in: It stats (using
922     C<lstat>) the path specified in the watcher and sets perls stat cache (as
923     well as EV's idea of the current stat values) to the values found.
924    
925     In scalar context, a boolean is return indicating success or failure of
926     the stat. In list context, the same 13-value list as with stat is returned
927     (except that the blksize and blocks fields are not reliable).
928    
929     In the case of an error, errno is set to C<ENOENT> (regardless of the
930     actual error value) and the C<nlink> value is forced to zero (if the stat
931     was successful then nlink is guaranteed to be non-zero).
932    
933     See also the next two entries for more info.
934    
935     =item ... = $w->attr
936    
937     Just like C<< $w->stat >>, but without the initial stat'ing: this returns
938     the values most recently detected by EV. See the next entry for more info.
939    
940     =item ... = $w->prev
941    
942     Just like C<< $w->stat >>, but without the initial stat'ing: this returns
943     the previous set of values, before the change.
944    
945     That is, when the watcher callback is invoked, C<< $w->prev >> will be set
946     to the values found I<before> a change was detected, while C<< $w->attr >>
947     returns the values found leading to the change detection. The difference (if any)
948     between C<prev> and C<attr> is what triggered the callback.
949    
950     If you did something to the filesystem object and do not want to trigger
951     yet another change, you can call C<stat> to update EV's idea of what the
952     current attributes are.
953    
954 root 1.56 =item $w->set ($path, $interval)
955    
956     Reconfigures the watcher, see the constructor above for details. Can be
957     called at any time.
958    
959     =item $current_path = $w->path
960    
961     =item $old_path = $w->path ($new_path)
962    
963     Returns the previously set path and optionally set a new one.
964    
965     =item $current_interval = $w->interval
966    
967     =item $old_interval = $w->interval ($new_interval)
968    
969     Returns the previously set interval and optionally set a new one. Can be
970     used to query the actual interval used.
971    
972     =back
973    
974    
975 root 1.54 =head3 IDLE WATCHERS - when you've got nothing better to do...
976    
977     =over 4
978 root 1.2
979 root 1.20 =item $w = EV::idle $callback
980 root 1.2
981 root 1.20 =item $w = EV::idle_ns $callback
982 root 1.2
983 root 1.73 =item $w = $loop->idle ($callback)
984    
985     =item $w = $loop->idle_ns ($callback)
986    
987 root 1.62 Call the callback when there are no other pending watchers of the same or
988     higher priority (excluding check, prepare and other idle watchers of the
989     same or lower priority, of course). They are called idle watchers because
990     when the watcher is the highest priority pending event in the process, the
991     process is considered to be idle at that priority.
992    
993     If you want a watcher that is only ever called when I<no> other events are
994     outstanding you have to set the priority to C<EV::MINPRI>.
995 root 1.2
996 root 1.20 The process will not block as long as any idle watchers are active, and
997     they will be called repeatedly until stopped.
998 root 1.2
999 root 1.62 For example, if you have idle watchers at priority C<0> and C<1>, and
1000     an I/O watcher at priority C<0>, then the idle watcher at priority C<1>
1001     and the I/O watcher will always run when ready. Only when the idle watcher
1002     at priority C<1> is stopped and the I/O watcher at priority C<0> is not
1003     pending with the C<0>-priority idle watcher be invoked.
1004    
1005 root 1.20 The C<idle_ns> variant doesn't start (activate) the newly created watcher.
1006 root 1.2
1007 root 1.54 =back
1008    
1009    
1010     =head3 PREPARE WATCHERS - customise your event loop!
1011    
1012     =over 4
1013 root 1.2
1014 root 1.20 =item $w = EV::prepare $callback
1015 root 1.1
1016 root 1.20 =item $w = EV::prepare_ns $callback
1017 root 1.1
1018 root 1.73 =item $w = $loop->prepare ($callback)
1019    
1020 root 1.76 =item $w = $loop->prepare_ns ($callback)
1021 root 1.73
1022 root 1.20 Call the callback just before the process would block. You can still
1023     create/modify any watchers at this point.
1024 root 1.1
1025 root 1.20 See the EV::check watcher, below, for explanations and an example.
1026 root 1.2
1027 root 1.20 The C<prepare_ns> variant doesn't start (activate) the newly created watcher.
1028 root 1.2
1029 root 1.54 =back
1030    
1031    
1032     =head3 CHECK WATCHERS - customise your event loop even more!
1033    
1034     =over 4
1035 root 1.2
1036 root 1.20 =item $w = EV::check $callback
1037 root 1.2
1038 root 1.20 =item $w = EV::check_ns $callback
1039 root 1.10
1040 root 1.73 =item $w = $loop->check ($callback)
1041    
1042     =item $w = $loop->check_ns ($callback)
1043    
1044 root 1.20 Call the callback just after the process wakes up again (after it has
1045     gathered events), but before any other callbacks have been invoked.
1046 root 1.10
1047 root 1.128 This can be used to integrate other event-based software into the EV
1048 root 1.20 mainloop: You register a prepare callback and in there, you create io and
1049     timer watchers as required by the other software. Here is a real-world
1050     example of integrating Net::SNMP (with some details left out):
1051 root 1.10
1052 root 1.20 our @snmp_watcher;
1053 root 1.2
1054 root 1.20 our $snmp_prepare = EV::prepare sub {
1055     # do nothing unless active
1056     $dispatcher->{_event_queue_h}
1057     or return;
1058 root 1.2
1059 root 1.20 # make the dispatcher handle any outstanding stuff
1060 root 1.45 ... not shown
1061 root 1.2
1062 root 1.62 # create an I/O watcher for each and every socket
1063 root 1.20 @snmp_watcher = (
1064     (map { EV::io $_, EV::READ, sub { } }
1065     keys %{ $dispatcher->{_descriptors} }),
1066 root 1.45
1067     EV::timer +($event->[Net::SNMP::Dispatcher::_ACTIVE]
1068     ? $event->[Net::SNMP::Dispatcher::_TIME] - EV::now : 0),
1069     0, sub { },
1070 root 1.20 );
1071     };
1072 root 1.2
1073 root 1.45 The callbacks are irrelevant (and are not even being called), the
1074     only purpose of those watchers is to wake up the process as soon as
1075     one of those events occurs (socket readable, or timer timed out). The
1076     corresponding EV::check watcher will then clean up:
1077 root 1.2
1078 root 1.20 our $snmp_check = EV::check sub {
1079     # destroy all watchers
1080     @snmp_watcher = ();
1081 root 1.2
1082 root 1.20 # make the dispatcher handle any new stuff
1083 root 1.45 ... not shown
1084 root 1.20 };
1085 root 1.2
1086 root 1.20 The callbacks of the created watchers will not be called as the watchers
1087 root 1.108 are destroyed before this can happen (remember EV::check gets called
1088 root 1.20 first).
1089 root 1.2
1090 root 1.20 The C<check_ns> variant doesn't start (activate) the newly created watcher.
1091 root 1.1
1092 root 1.128 =item EV::CHECK constant issues
1093    
1094     Like all other watcher types, there is a bitmask constant for use in
1095     C<$revents> and other places. The C<EV::CHECK> is special as it has
1096     the same name as the C<CHECK> sub called by Perl. This doesn't cause
1097     big issues on newer perls (beginning with 5.8.9), but it means thatthe
1098     constant must be I<inlined>, i.e. runtime calls will not work. That means
1099     that as long as you always C<use EV> and then C<EV::CHECK> you are on the
1100     safe side.
1101    
1102 root 1.1 =back
1103    
1104 root 1.54
1105 root 1.56 =head3 FORK WATCHERS - the audacity to resume the event loop after a fork
1106 root 1.54
1107 root 1.56 Fork watchers are called when a C<fork ()> was detected. The invocation
1108     is done before the event loop blocks next and before C<check> watchers
1109     are being called, and only in the child after the fork.
1110 root 1.54
1111 root 1.56 =over 4
1112 root 1.54
1113 root 1.56 =item $w = EV::fork $callback
1114 root 1.54
1115 root 1.56 =item $w = EV::fork_ns $callback
1116 root 1.54
1117 root 1.73 =item $w = $loop->fork ($callback)
1118    
1119     =item $w = $loop->fork_ns ($callback)
1120    
1121 root 1.56 Call the callback before the event loop is resumed in the child process
1122     after a fork.
1123 root 1.54
1124 root 1.56 The C<fork_ns> variant doesn't start (activate) the newly created watcher.
1125 root 1.54
1126     =back
1127    
1128    
1129 root 1.79 =head3 EMBED WATCHERS - when one backend isn't enough...
1130    
1131     This is a rather advanced watcher type that lets you embed one event loop
1132     into another (currently only IO events are supported in the embedded
1133     loop, other types of watchers might be handled in a delayed or incorrect
1134     fashion and must not be used).
1135    
1136     See the libev documentation at
1137     L<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#code_ev_embed_code_when_one_backend_>
1138 root 1.105 (locally installed as F<EV::libev>) for more details.
1139 root 1.79
1140     In short, this watcher is most useful on BSD systems without working
1141     kqueue to still be able to handle a large number of sockets:
1142    
1143 root 1.98 my $socket_loop;
1144    
1145     # check wether we use SELECT or POLL _and_ KQUEUE is supported
1146     if (
1147     (EV::backend & (EV::BACKEND_POLL | EV::BACKEND_SELECT))
1148     && (EV::supported_backends & EV::embeddable_backends & EV::BACKEND_KQUEUE)
1149     ) {
1150     # use kqueue for sockets
1151     $socket_loop = new EV::Loop EV::BACKEND_KQUEUE | EV::FLAG_NOENV;
1152     }
1153    
1154     # use the default loop otherwise
1155     $socket_loop ||= EV::default_loop;
1156 root 1.79
1157     =over 4
1158    
1159 root 1.101 =item $w = EV::embed $otherloop[, $callback]
1160 root 1.79
1161 root 1.101 =item $w = EV::embed_ns $otherloop[, $callback]
1162 root 1.79
1163 root 1.101 =item $w = $loop->embed ($otherloop[, $callback])
1164 root 1.79
1165 root 1.101 =item $w = $loop->embed_ns ($otherloop[, $callback])
1166 root 1.79
1167     Call the callback when the embedded event loop (C<$otherloop>) has any
1168 root 1.101 I/O activity. The C<$callback> is optional: if it is missing, then the
1169     embedded event loop will be managed automatically (which is recommended),
1170     otherwise you have to invoke C<sweep> yourself.
1171 root 1.79
1172     The C<embed_ns> variant doesn't start (activate) the newly created watcher.
1173    
1174     =back
1175    
1176 root 1.84 =head3 ASYNC WATCHERS - how to wake up another event loop
1177    
1178 root 1.116 Async watchers are provided by EV, but have little use in perl directly,
1179     as perl neither supports threads running in parallel nor direct access to
1180     signal handlers or other contexts where they could be of value.
1181 root 1.84
1182     It is, however, possible to use them from the XS level.
1183    
1184     Please see the libev documentation for further details.
1185    
1186 root 1.87 =over 4
1187    
1188     =item $w = EV::async $callback
1189    
1190     =item $w = EV::async_ns $callback
1191    
1192 root 1.138 =item $w = $loop->async ($callback)
1193    
1194     =item $w = $loop->async_ns ($callback)
1195    
1196 root 1.87 =item $w->send
1197    
1198     =item $bool = $w->async_pending
1199    
1200     =back
1201    
1202 root 1.138 =head3 CLEANUP WATCHERS - how to clean up when the event loop goes away
1203    
1204     Cleanup watchers are not supported on the Perl level, they can only be
1205     used via XS currently.
1206    
1207 root 1.79
1208 root 1.61 =head1 PERL SIGNALS
1209    
1210     While Perl signal handling (C<%SIG>) is not affected by EV, the behaviour
1211     with EV is as the same as any other C library: Perl-signals will only be
1212     handled when Perl runs, which means your signal handler might be invoked
1213     only the next time an event callback is invoked.
1214    
1215     The solution is to use EV signal watchers (see C<EV::signal>), which will
1216     ensure proper operations with regards to other event watchers.
1217    
1218     If you cannot do this for whatever reason, you can also force a watcher
1219     to be called on every event loop iteration by installing a C<EV::check>
1220     watcher:
1221    
1222     my $async_check = EV::check sub { };
1223    
1224 root 1.75 This ensures that perl gets into control for a short time to handle any
1225     pending signals, and also ensures (slightly) slower overall operation.
1226 root 1.61
1227 root 1.116 =head1 ITHREADS
1228 root 1.13
1229 root 1.116 Ithreads are not supported by this module in any way. Perl pseudo-threads
1230     is evil stuff and must die. Real threads as provided by Coro are fully
1231     supported (and enhanced support is available via L<Coro::EV>).
1232 root 1.46
1233     =head1 FORK
1234    
1235     Most of the "improved" event delivering mechanisms of modern operating
1236     systems have quite a few problems with fork(2) (to put it bluntly: it is
1237     not supported and usually destructive). Libev makes it possible to work
1238     around this by having a function that recreates the kernel state after
1239     fork in the child.
1240    
1241     On non-win32 platforms, this module requires the pthread_atfork
1242     functionality to do this automatically for you. This function is quite
1243     buggy on most BSDs, though, so YMMV. The overhead for this is quite
1244     negligible, because everything the function currently does is set a flag
1245     that is checked only when the event loop gets used the next time, so when
1246     you do fork but not use EV, the overhead is minimal.
1247    
1248     On win32, there is no notion of fork so all this doesn't apply, of course.
1249 root 1.13
1250 root 1.1 =cut
1251    
1252 root 1.8 our $DIED = sub {
1253     warn "EV: error in callback (ignoring): $@";
1254     };
1255    
1256 root 1.28 default_loop
1257 root 1.68 or die 'EV: cannot initialise libev backend. bad $ENV{LIBEV_FLAGS}?';
1258 root 1.1
1259     1;
1260    
1261 root 1.3 =head1 SEE ALSO
1262    
1263 root 1.130 L<EV::MakeMaker> - MakeMaker interface to XS API, L<EV::ADNS>
1264     (asynchronous DNS), L<Glib::EV> (makes Glib/Gtk2 use EV as event
1265     loop), L<EV::Glib> (embed Glib into EV), L<Coro::EV> (efficient thread
1266     integration), L<Net::SNMP::EV> (asynchronous SNMP), L<AnyEvent> for
1267 root 1.90 event-loop agnostic and portable event driven programming.
1268 root 1.3
1269 root 1.1 =head1 AUTHOR
1270    
1271 root 1.98 Marc Lehmann <schmorp@schmorp.de>
1272     http://home.schmorp.de/
1273 root 1.1
1274     =cut
1275