ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/README
Revision: 1.15
Committed: Wed Dec 5 14:06:50 2007 UTC (16 years, 5 months ago) by root
Branch: MAIN
CVS Tags: rel-1_6
Changes since 1.14: +6 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 NAME
2 root 1.6 EV - perl interface to libev, a high performance full-featured event
3     loop
4 root 1.1
5 root 1.2 SYNOPSIS
6 root 1.4 use EV;
7    
8 root 1.6 # TIMERS
9 root 1.4
10     my $w = EV::timer 2, 0, sub {
11     warn "is called after 2s";
12     };
13    
14 root 1.9 my $w = EV::timer 2, 2, sub {
15     warn "is called roughly every 2s (repeat = 2)";
16 root 1.4 };
17    
18     undef $w; # destroy event watcher again
19    
20 root 1.8 my $w = EV::periodic 0, 60, 0, sub {
21 root 1.4 warn "is called every minute, on the minute, exactly";
22     };
23    
24     # IO
25    
26 root 1.6 my $w = EV::io *STDIN, EV::READ, sub {
27 root 1.9 my ($w, $revents) = @_; # all callbacks receive the watcher and event mask
28 root 1.6 warn "stdin is readable, you entered: ", <STDIN>;
29 root 1.4 };
30    
31     # SIGNALS
32    
33     my $w = EV::signal 'QUIT', sub {
34     warn "sigquit received\n";
35     };
36    
37 root 1.5 # CHILD/PID STATUS CHANGES
38    
39     my $w = EV::child 666, sub {
40 root 1.7 my ($w, $revents) = @_;
41     my $status = $w->rstatus;
42 root 1.5 };
43 root 1.13
44     # STAT CHANGES
45     my $w = EV::stat "/etc/passwd", 10, sub {
46     my ($w, $revents) = @_;
47     warn $w->path, " has changed somehow.\n";
48     };
49 root 1.4
50     # MAINLOOP
51 root 1.10 EV::loop; # loop until EV::unloop is called or all watchers stop
52 root 1.6 EV::loop EV::LOOP_ONESHOT; # block until at least one event could be handled
53     EV::loop EV::LOOP_NONBLOCK; # try to handle same events, but do not block
54 root 1.2
55     DESCRIPTION
56 root 1.5 This module provides an interface to libev
57 root 1.12 (<http://software.schmorp.de/pkg/libev.html>). While the documentation
58     below is comprehensive, one might also consult the documentation of
59     libev itself (<http://cvs.schmorp.de/libev/ev.html>) for more subtle
60     details on watcher semantics or some discussion on the available
61     backends, or how to force a specific backend with "LIBEV_FLAGS".
62 root 1.2
63 root 1.3 BASIC INTERFACE
64     $EV::DIED
65     Must contain a reference to a function that is called when a
66     callback throws an exception (with $@ containing thr error). The
67     default prints an informative message and continues.
68    
69     If this callback throws an exception it will be silently ignored.
70    
71 root 1.6 $time = EV::time
72     Returns the current time in (fractional) seconds since the epoch.
73    
74 root 1.2 $time = EV::now
75 root 1.6 Returns the time the last event loop iteration has been started.
76     This is the time that (relative) timers are based on, and refering
77     to it is usually faster then calling EV::time.
78    
79 root 1.11 $method = EV::method
80 root 1.6 Returns an integer describing the backend used by libev
81     (EV::METHOD_SELECT or EV::METHOD_EPOLL).
82    
83     EV::loop [$flags]
84     Begin checking for events and calling callbacks. It returns when a
85 root 1.10 callback calls EV::unloop.
86 root 1.6
87     The $flags argument can be one of the following:
88    
89     0 as above
90     EV::LOOP_ONESHOT block at most once (wait, but do not loop)
91     EV::LOOP_NONBLOCK do not block at all (fetch/handle events but do not wait)
92    
93 root 1.10 EV::unloop [$how]
94     When called with no arguments or an argument of EV::UNLOOP_ONE,
95     makes the innermost call to EV::loop return.
96 root 1.6
97 root 1.10 When called with an argument of EV::UNLOOP_ALL, all calls to
98     EV::loop will return as fast as possible.
99 root 1.6
100 root 1.15 $count = EV::loop_count
101     Return the number of times the event loop has polled for new events.
102     Sometiems useful as a generation counter.
103    
104 root 1.12 EV::once $fh_or_undef, $events, $timeout, $cb->($revents)
105     This function rolls together an I/O and a timer watcher for a single
106     one-shot event without the need for managing a watcher object.
107    
108     If $fh_or_undef is a filehandle or file descriptor, then $events
109     must be a bitset containing either "EV::READ", "EV::WRITE" or
110     "EV::READ | EV::WRITE", indicating the type of I/O event you want to
111     wait for. If you do not want to wait for some I/O event, specify
112     "undef" for $fh_or_undef and 0 for $events).
113    
114     If timeout is "undef" or negative, then there will be no timeout.
115     Otherwise a EV::timer with this value will be started.
116    
117     When an error occurs or either the timeout or I/O watcher triggers,
118     then the callback will be called with the received event set (in
119     general you can expect it to be a combination of "EV:ERROR",
120     "EV::READ", "EV::WRITE" and "EV::TIMEOUT").
121    
122     EV::once doesn't return anything: the watchers stay active till
123     either of them triggers, then they will be stopped and freed, and
124     the callback invoked.
125    
126 root 1.13 WATCHER OBJECTS
127 root 1.6 A watcher is an object that gets created to record your interest in some
128     event. For instance, if you want to wait for STDIN to become readable,
129     you would create an EV::io watcher for that:
130    
131     my $watcher = EV::io *STDIN, EV::READ, sub {
132     my ($watcher, $revents) = @_;
133     warn "yeah, STDIN should not be readable without blocking!\n"
134     };
135 root 1.2
136 root 1.6 All watchers can be active (waiting for events) or inactive (paused).
137     Only active watchers will have their callbacks invoked. All callbacks
138     will be called with at least two arguments: the watcher and a bitmask of
139     received events.
140    
141     Each watcher type has its associated bit in revents, so you can use the
142     same callback for multiple watchers. The event mask is named after the
143     type, i..e. EV::child sets EV::CHILD, EV::prepare sets EV::PREPARE,
144     EV::periodic sets EV::PERIODIC and so on, with the exception of IO
145     events (which can set both EV::READ and EV::WRITE bits), and EV::timer
146     (which uses EV::TIMEOUT).
147    
148     In the rare case where one wants to create a watcher but not start it at
149     the same time, each constructor has a variant with a trailing "_ns" in
150     its name, e.g. EV::io has a non-starting variant EV::io_ns and so on.
151    
152     Please note that a watcher will automatically be stopped when the
153 root 1.7 watcher object is destroyed, so you *need* to keep the watcher objects
154 root 1.6 returned by the constructors.
155    
156 root 1.7 Also, all methods changing some aspect of a watcher (->set, ->priority,
157     ->fh and so on) automatically stop and start it again if it is active,
158     which means pending events get lost.
159    
160 root 1.13 COMMON WATCHER METHODS
161     This section lists methods common to all watchers.
162 root 1.2
163 root 1.6 $w->start
164     Starts a watcher if it isn't active already. Does nothing to an
165     already active watcher. By default, all watchers start out in the
166     active state (see the description of the "_ns" variants if you need
167     stopped watchers).
168    
169     $w->stop
170     Stop a watcher if it is active. Also clear any pending events
171     (events that have been received but that didn't yet result in a
172     callback invocation), regardless of wether the watcher was active or
173     not.
174    
175     $bool = $w->is_active
176     Returns true if the watcher is active, false otherwise.
177    
178 root 1.8 $current_data = $w->data
179     $old_data = $w->data ($new_data)
180     Queries a freely usable data scalar on the watcher and optionally
181     changes it. This is a way to associate custom data with a watcher:
182    
183     my $w = EV::timer 60, 0, sub {
184     warn $_[0]->data;
185     };
186     $w->data ("print me!");
187    
188 root 1.6 $current_cb = $w->cb
189     $old_cb = $w->cb ($new_cb)
190     Queries the callback on the watcher and optionally changes it. You
191 root 1.7 can do this at any time without the watcher restarting.
192    
193     $current_priority = $w->priority
194     $old_priority = $w->priority ($new_priority)
195     Queries the priority on the watcher and optionally changes it.
196     Pending watchers with higher priority will be invoked first. The
197     valid range of priorities lies between EV::MAXPRI (default 2) and
198     EV::MINPRI (default -2). If the priority is outside this range it
199     will automatically be normalised to the nearest valid priority.
200    
201 root 1.12 The default priority of any newly-created watcher is 0.
202    
203     Note that the priority semantics have not yet been fleshed out and
204     are subject to almost certain change.
205 root 1.2
206 root 1.6 $w->trigger ($revents)
207     Call the callback *now* with the given event mask.
208 root 1.2
209 root 1.12 $previous_state = $w->keepalive ($bool)
210     Normally, "EV::loop" will return when there are no active watchers
211     (which is a "deadlock" because no progress can be made anymore).
212     This is convinient because it allows you to start your watchers (and
213     your jobs), call "EV::loop" once and when it returns you know that
214     all your jobs are finished (or they forgot to register some watchers
215     for their task :).
216    
217     Sometimes, however, this gets in your way, for example when you the
218     module that calls "EV::loop" (usually the main program) is not the
219     same module as a long-living watcher (for example a DNS client
220     module written by somebody else even). Then you might want any
221     outstanding requests to be handled, but you would not want to keep
222     "EV::loop" from returning just because you happen to have this
223     long-running UDP port watcher.
224    
225     In this case you can clear the keepalive status, which means that
226     even though your watcher is active, it won't keep "EV::loop" from
227     returning.
228    
229     The initial value for keepalive is true (enabled), and you cna
230     change it any time.
231    
232     Example: Register an IO watcher for some UDP socket but do not keep
233     the event loop from running just because of that watcher.
234    
235     my $udp_socket = ...
236     my $udp_watcher = EV::io $udp_socket, EV::READ, sub { ... };
237     $udp_watcher->keepalive (0);
238    
239 root 1.13 WATCHER TYPES
240     Each of the following subsections describes a single watcher type.
241    
242     IO WATCHERS - is this file descriptor readable or writable?
243 root 1.6 $w = EV::io $fileno_or_fh, $eventmask, $callback
244     $w = EV::io_ns $fileno_or_fh, $eventmask, $callback
245     As long as the returned watcher object is alive, call the $callback
246 root 1.13 when at least one of events specified in $eventmask occurs.
247 root 1.2
248 root 1.6 The $eventmask can be one or more of these constants ORed together:
249 root 1.1
250 root 1.2 EV::READ wait until read() wouldn't block anymore
251     EV::WRITE wait until write() wouldn't block anymore
252    
253 root 1.6 The "io_ns" variant doesn't start (activate) the newly created
254     watcher.
255    
256     $w->set ($fileno_or_fh, $eventmask)
257     Reconfigures the watcher, see the constructor above for details. Can
258     be called at any time.
259    
260     $current_fh = $w->fh
261     $old_fh = $w->fh ($new_fh)
262     Returns the previously set filehandle and optionally set a new one.
263    
264     $current_eventmask = $w->events
265     $old_eventmask = $w->events ($new_eventmask)
266     Returns the previously set event mask and optionally set a new one.
267    
268 root 1.13 TIMER WATCHERS - relative and optionally repeating timeouts
269 root 1.6 $w = EV::timer $after, $repeat, $callback
270     $w = EV::timer_ns $after, $repeat, $callback
271 root 1.12 Calls the callback after $after seconds (which may be fractional).
272     If $repeat is non-zero, the timer will be restarted (with the
273     $repeat value as $after) after the callback returns.
274 root 1.6
275     This means that the callback would be called roughly after $after
276 root 1.10 seconds, and then every $repeat seconds. The timer does his best not
277     to drift, but it will not invoke the timer more often then once per
278     event loop iteration, and might drift in other cases. If that isn't
279     acceptable, look at EV::periodic, which can provide long-term stable
280     timers.
281 root 1.6
282 root 1.10 The timer is based on a monotonic clock, that is, if somebody is
283 root 1.6 sitting in front of the machine while the timer is running and
284     changes the system clock, the timer will nevertheless run (roughly)
285     the same time.
286    
287     The "timer_ns" variant doesn't start (activate) the newly created
288     watcher.
289    
290     $w->set ($after, $repeat)
291     Reconfigures the watcher, see the constructor above for details. Can
292 root 1.13 be called at any time.
293 root 1.6
294     $w->again
295     Similar to the "start" method, but has special semantics for
296     repeating timers:
297 root 1.2
298 root 1.10 If the timer is active and non-repeating, it will be stopped.
299    
300 root 1.6 If the timer is active and repeating, reset the timeout to occur
301     $repeat seconds after now.
302 root 1.2
303 root 1.10 If the timer is inactive and repeating, start it using the repeat
304     value.
305 root 1.6
306     Otherwise do nothing.
307    
308     This behaviour is useful when you have a timeout for some IO
309     operation. You create a timer object with the same value for $after
310     and $repeat, and then, in the read/write watcher, run the "again"
311     method on the timeout.
312    
313 root 1.13 PERIODIC WATCHERS - to cron or not to cron?
314 root 1.8 $w = EV::periodic $at, $interval, $reschedule_cb, $callback
315     $w = EV::periodic_ns $at, $interval, $reschedule_cb, $callback
316     Similar to EV::timer, but is not based on relative timeouts but on
317     absolute times. Apart from creating "simple" timers that trigger
318     "at" the specified time, it can also be used for non-drifting
319     absolute timers and more complex, cron-like, setups that are not
320     adversely affected by time jumps (i.e. when the system clock is
321     changed by explicit date -s or other means such as ntpd). It is also
322     the most complex watcher type in EV.
323    
324     It has three distinct "modes":
325    
326     * absolute timer ($interval = $reschedule_cb = 0)
327     This time simply fires at the wallclock time $at and doesn't
328     repeat. It will not adjust when a time jump occurs, that is, if
329     it is to be run at January 1st 2011 then it will run when the
330     system time reaches or surpasses this time.
331    
332     * non-repeating interval timer ($interval > 0, $reschedule_cb = 0)
333     In this mode the watcher will always be scheduled to time out at
334     the next "$at + N * $interval" time (for some integer N) and
335     then repeat, regardless of any time jumps.
336    
337     This can be used to create timers that do not drift with respect
338     to system time:
339    
340     my $hourly = EV::periodic 0, 3600, 0, sub { print "once/hour\n" };
341    
342     That doesn't mean there will always be 3600 seconds in between
343     triggers, but only that the the clalback will be called when the
344     system time shows a full hour (UTC).
345    
346     Another way to think about it (for the mathematically inclined)
347     is that EV::periodic will try to run the callback in this mode
348     at the next possible time where "$time = $at (mod $interval)",
349     regardless of any time jumps.
350    
351     * manual reschedule mode ($reschedule_cb = coderef)
352     In this mode $interval and $at are both being ignored. Instead,
353 root 1.10 each time the periodic watcher gets scheduled, the reschedule
354 root 1.8 callback ($reschedule_cb) will be called with the watcher as
355     first, and the current time as second argument.
356    
357     *This callback MUST NOT stop or destroy this or any other
358     periodic watcher, ever*. If you need to stop it, return 1e30 and
359     stop it afterwards.
360    
361     It must return the next time to trigger, based on the passed
362     time value (that is, the lowest time value larger than to the
363     second argument). It will usually be called just before the
364     callback will be triggered, but might be called at other times,
365     too.
366    
367     This can be used to create very complex timers, such as a timer
368     that triggers on each midnight, local time (actually 24 hours
369     after the last midnight, to keep the example simple. If you know
370     a way to do it correctly in about the same space (without
371     requiring elaborate modules), drop me a note :):
372    
373     my $daily = EV::periodic 0, 0, sub {
374     my ($w, $now) = @_;
375    
376     use Time::Local ();
377     my (undef, undef, undef, $d, $m, $y) = localtime $now;
378     86400 + Time::Local::timelocal 0, 0, 0, $d, $m, $y
379     }, sub {
380     print "it's midnight or likely shortly after, now\n";
381     };
382 root 1.6
383     The "periodic_ns" variant doesn't start (activate) the newly created
384 root 1.2 watcher.
385    
386 root 1.8 $w->set ($at, $interval, $reschedule_cb)
387 root 1.6 Reconfigures the watcher, see the constructor above for details. Can
388 root 1.13 be called at any time.
389 root 1.6
390 root 1.8 $w->again
391     Simply stops and starts the watcher again.
392    
393 root 1.13 SIGNAL WATCHERS - signal me when a signal gets signalled!
394 root 1.6 $w = EV::signal $signal, $callback
395     $w = EV::signal_ns $signal, $callback
396 root 1.4 Call the callback when $signal is received (the signal can be
397 root 1.13 specified by number or by name, just as with "kill" or %SIG).
398 root 1.4
399     EV will grab the signal for the process (the kernel only allows one
400 root 1.6 component to receive a signal at a time) when you start a signal
401     watcher, and removes it again when you stop it. Perl does the same
402     when you add/remove callbacks to %SIG, so watch out.
403    
404     You can have as many signal watchers per signal as you want.
405 root 1.1
406 root 1.6 The "signal_ns" variant doesn't start (activate) the newly created
407     watcher.
408    
409     $w->set ($signal)
410     Reconfigures the watcher, see the constructor above for details. Can
411 root 1.13 be called at any time.
412 root 1.6
413 root 1.7 $current_signum = $w->signal
414     $old_signum = $w->signal ($new_signal)
415     Returns the previously set signal (always as a number not name) and
416     optionally set a new one.
417    
418 root 1.13 CHILD WATCHERS - watch out for process status changes
419 root 1.6 $w = EV::child $pid, $callback
420     $w = EV::child_ns $pid, $callback
421     Call the callback when a status change for pid $pid (or any pid if
422     $pid is 0) has been received. More precisely: when the process
423 root 1.13 receives a "SIGCHLD", EV will fetch the outstanding exit/wait status
424 root 1.6 for all changed/zombie children and call the callback.
425    
426 root 1.13 It is valid (and fully supported) to install a child watcher after a
427     child has exited but before the event loop has started its next
428     iteration (for example, first you "fork", then the new child process
429     might exit, and only then do you install a child watcher in the
430     parent for the new pid).
431 root 1.6
432 root 1.13 You can access both exit (or tracing) status and pid by using the
433     "rstatus" and "rpid" methods on the watcher object.
434    
435     You can have as many pid watchers per pid as you want, they will all
436     be called.
437 root 1.6
438     The "child_ns" variant doesn't start (activate) the newly created
439     watcher.
440 root 1.1
441 root 1.6 $w->set ($pid)
442     Reconfigures the watcher, see the constructor above for details. Can
443 root 1.13 be called at any time.
444 root 1.6
445 root 1.7 $current_pid = $w->pid
446     $old_pid = $w->pid ($new_pid)
447     Returns the previously set process id and optionally set a new one.
448    
449     $exit_status = $w->rstatus
450     Return the exit/wait status (as returned by waitpid, see the waitpid
451     entry in perlfunc).
452    
453     $pid = $w->rpid
454     Return the pid of the awaited child (useful when you have installed
455     a watcher for all pids).
456    
457 root 1.13 STAT WATCHERS - did the file attributes just change?
458     $w = EV::stat $path, $interval, $callback
459     $w = EV::stat_ns $path, $interval, $callback
460     Call the callback when a file status change has been detected on
461     $path. The $path does not need to exist, changing from "path exists"
462     to "path does not exist" is a status change like any other.
463    
464     The $interval is a recommended polling interval for systems where
465     OS-supported change notifications don't exist or are not supported.
466     If you use 0 then an unspecified default is used (which is highly
467     recommended!), which is to be expected to be around five seconds
468     usually.
469    
470     This watcher type is not meant for massive numbers of stat watchers,
471     as even with OS-supported change notifications, this can be
472     resource-intensive.
473    
474     The "stat_ns" variant doesn't start (activate) the newly created
475     watcher.
476    
477 root 1.14 ... = $w->stat
478     This call is very similar to the perl "stat" built-in: It stats
479     (using "lstat") the path specified in the watcher and sets perls
480     stat cache (as well as EV's idea of the current stat values) to the
481     values found.
482    
483     In scalar context, a boolean is return indicating success or failure
484     of the stat. In list context, the same 13-value list as with stat is
485     returned (except that the blksize and blocks fields are not
486     reliable).
487    
488     In the case of an error, errno is set to "ENOENT" (regardless of the
489     actual error value) and the "nlink" value is forced to zero (if the
490     stat was successful then nlink is guaranteed to be non-zero).
491    
492     See also the next two entries for more info.
493    
494     ... = $w->attr
495     Just like "$w->stat", but without the initial stat'ing: this returns
496     the values most recently detected by EV. See the next entry for more
497     info.
498    
499     ... = $w->prev
500     Just like "$w->stat", but without the initial stat'ing: this returns
501     the previous set of values, before the change.
502    
503     That is, when the watcher callback is invoked, "$w->prev" will be
504     set to the values found *before* a change was detected, while
505     "$w->attr" returns the values found leading to the change detection.
506     The difference (if any) between "prev" and "attr" is what triggered
507     the callback.
508    
509     If you did something to the filesystem object and do not want to
510     trigger yet another change, you can call "stat" to update EV's idea
511     of what the current attributes are.
512    
513 root 1.13 $w->set ($path, $interval)
514     Reconfigures the watcher, see the constructor above for details. Can
515     be called at any time.
516    
517     $current_path = $w->path
518     $old_path = $w->path ($new_path)
519     Returns the previously set path and optionally set a new one.
520    
521     $current_interval = $w->interval
522     $old_interval = $w->interval ($new_interval)
523     Returns the previously set interval and optionally set a new one.
524     Can be used to query the actual interval used.
525    
526     IDLE WATCHERS - when you've got nothing better to do...
527 root 1.6 $w = EV::idle $callback
528     $w = EV::idle_ns $callback
529     Call the callback when there are no pending io, timer/periodic,
530     signal or child events, i.e. when the process is idle.
531 root 1.1
532 root 1.6 The process will not block as long as any idle watchers are active,
533     and they will be called repeatedly until stopped.
534 root 1.1
535 root 1.6 The "idle_ns" variant doesn't start (activate) the newly created
536     watcher.
537 root 1.4
538 root 1.13 PREPARE WATCHERS - customise your event loop!
539 root 1.6 $w = EV::prepare $callback
540     $w = EV::prepare_ns $callback
541     Call the callback just before the process would block. You can still
542     create/modify any watchers at this point.
543 root 1.1
544 root 1.6 See the EV::check watcher, below, for explanations and an example.
545 root 1.1
546 root 1.6 The "prepare_ns" variant doesn't start (activate) the newly created
547     watcher.
548 root 1.1
549 root 1.13 CHECK WATCHERS - customise your event loop even more!
550 root 1.6 $w = EV::check $callback
551     $w = EV::check_ns $callback
552     Call the callback just after the process wakes up again (after it
553     has gathered events), but before any other callbacks have been
554     invoked.
555    
556     This is used to integrate other event-based software into the EV
557     mainloop: You register a prepare callback and in there, you create
558     io and timer watchers as required by the other software. Here is a
559     real-world example of integrating Net::SNMP (with some details left
560     out):
561    
562     our @snmp_watcher;
563    
564     our $snmp_prepare = EV::prepare sub {
565     # do nothing unless active
566     $dispatcher->{_event_queue_h}
567     or return;
568    
569     # make the dispatcher handle any outstanding stuff
570 root 1.12 ... not shown
571 root 1.6
572     # create an IO watcher for each and every socket
573     @snmp_watcher = (
574     (map { EV::io $_, EV::READ, sub { } }
575     keys %{ $dispatcher->{_descriptors} }),
576 root 1.12
577     EV::timer +($event->[Net::SNMP::Dispatcher::_ACTIVE]
578     ? $event->[Net::SNMP::Dispatcher::_TIME] - EV::now : 0),
579     0, sub { },
580 root 1.6 );
581     };
582    
583 root 1.12 The callbacks are irrelevant (and are not even being called), the
584     only purpose of those watchers is to wake up the process as soon as
585     one of those events occurs (socket readable, or timer timed out).
586     The corresponding EV::check watcher will then clean up:
587 root 1.6
588     our $snmp_check = EV::check sub {
589     # destroy all watchers
590     @snmp_watcher = ();
591    
592     # make the dispatcher handle any new stuff
593 root 1.12 ... not shown
594 root 1.6 };
595    
596     The callbacks of the created watchers will not be called as the
597     watchers are destroyed before this cna happen (remember EV::check
598     gets called first).
599 root 1.1
600 root 1.6 The "check_ns" variant doesn't start (activate) the newly created
601     watcher.
602 root 1.1
603 root 1.13 FORK WATCHERS - the audacity to resume the event loop after a fork
604     Fork watchers are called when a "fork ()" was detected. The invocation
605     is done before the event loop blocks next and before "check" watchers
606     are being called, and only in the child after the fork.
607    
608     $w = EV::fork $callback
609     $w = EV::fork_ns $callback
610     Call the callback before the event loop is resumed in the child
611     process after a fork.
612    
613     The "fork_ns" variant doesn't start (activate) the newly created
614     watcher.
615    
616 root 1.5 THREADS
617 root 1.12 Threads are not supported by this module in any way. Perl pseudo-threads
618     is evil stuff and must die. As soon as Perl gains real threads I will
619     work on thread support for it.
620    
621     FORK
622     Most of the "improved" event delivering mechanisms of modern operating
623     systems have quite a few problems with fork(2) (to put it bluntly: it is
624     not supported and usually destructive). Libev makes it possible to work
625     around this by having a function that recreates the kernel state after
626     fork in the child.
627    
628     On non-win32 platforms, this module requires the pthread_atfork
629     functionality to do this automatically for you. This function is quite
630     buggy on most BSDs, though, so YMMV. The overhead for this is quite
631     negligible, because everything the function currently does is set a flag
632     that is checked only when the event loop gets used the next time, so
633     when you do fork but not use EV, the overhead is minimal.
634    
635     On win32, there is no notion of fork so all this doesn't apply, of
636     course.
637 root 1.2
638     SEE ALSO
639 root 1.15 EV::ADNS (asynchronous dns), Glib::EV (makes Glib/Gtk2 use EV as event
640     loop), Coro::EV (efficient coroutines with EV).
641 root 1.1
642     AUTHOR
643     Marc Lehmann <schmorp@schmorp.de>
644     http://home.schmorp.de/
645