ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.pod
(Generate patch)

Comparing libev/ev.pod (file contents):
Revision 1.428 by root, Thu May 30 18:51:57 2013 UTC vs.
Revision 1.434 by root, Tue May 6 13:24:39 2014 UTC

1=encoding utf-8
2
1=head1 NAME 3=head1 NAME
2 4
3libev - a high performance full-featured event loop written in C 5libev - a high performance full-featured event loop written in C
4 6
5=head1 SYNOPSIS 7=head1 SYNOPSIS
680If you need dynamically allocated loops it is better to use C<ev_loop_new> 682If you need dynamically allocated loops it is better to use C<ev_loop_new>
681and C<ev_loop_destroy>. 683and C<ev_loop_destroy>.
682 684
683=item ev_loop_fork (loop) 685=item ev_loop_fork (loop)
684 686
685This function sets a flag that causes subsequent C<ev_run> iterations to 687This function sets a flag that causes subsequent C<ev_run> iterations
686reinitialise the kernel state for backends that have one. Despite the 688to reinitialise the kernel state for backends that have one. Despite
687name, you can call it anytime, but it makes most sense after forking, in 689the name, you can call it anytime you are allowed to start or stop
688the child process. You I<must> call it (or use C<EVFLAG_FORKCHECK>) in the 690watchers (except inside an C<ev_prepare> callback), but it makes most
691sense after forking, in the child process. You I<must> call it (or use
689child before resuming or calling C<ev_run>. 692C<EVFLAG_FORKCHECK>) in the child before resuming or calling C<ev_run>.
690 693
691Again, you I<have> to call it on I<any> loop that you want to re-use after 694Again, you I<have> to call it on I<any> loop that you want to re-use after
692a fork, I<even if you do not plan to use the loop in the parent>. This is 695a fork, I<even if you do not plan to use the loop in the parent>. This is
693because some kernel interfaces *cough* I<kqueue> *cough* do funny things 696because some kernel interfaces *cough* I<kqueue> *cough* do funny things
694during fork. 697during fork.
695 698
696On the other hand, you only need to call this function in the child 699On the other hand, you only need to call this function in the child
2026 2029
2027The relative timeouts are calculated relative to the C<ev_now ()> 2030The relative timeouts are calculated relative to the C<ev_now ()>
2028time. This is usually the right thing as this timestamp refers to the time 2031time. This is usually the right thing as this timestamp refers to the time
2029of the event triggering whatever timeout you are modifying/starting. If 2032of the event triggering whatever timeout you are modifying/starting. If
2030you suspect event processing to be delayed and you I<need> to base the 2033you suspect event processing to be delayed and you I<need> to base the
2031timeout on the current time, use something like this to adjust for this: 2034timeout on the current time, use something like the following to adjust
2035for it:
2032 2036
2033 ev_timer_set (&timer, after + ev_now () - ev_time (), 0.); 2037 ev_timer_set (&timer, after + (ev_time () - ev_now ()), 0.);
2034 2038
2035If the event loop is suspended for a long time, you can also force an 2039If the event loop is suspended for a long time, you can also force an
2036update of the time returned by C<ev_now ()> by calling C<ev_now_update 2040update of the time returned by C<ev_now ()> by calling C<ev_now_update
2037()>. 2041()>, although that will push the event time of all outstanding events
2042further into the future.
2038 2043
2039=head3 The special problem of unsynchronised clocks 2044=head3 The special problem of unsynchronised clocks
2040 2045
2041Modern systems have a variety of clocks - libev itself uses the normal 2046Modern systems have a variety of clocks - libev itself uses the normal
2042"wall clock" clock and, if available, the monotonic clock (to avoid time 2047"wall clock" clock and, if available, the monotonic clock (to avoid time
2391 2396
2392 ev_periodic hourly_tick; 2397 ev_periodic hourly_tick;
2393 ev_periodic_init (&hourly_tick, clock_cb, 2398 ev_periodic_init (&hourly_tick, clock_cb,
2394 fmod (ev_now (loop), 3600.), 3600., 0); 2399 fmod (ev_now (loop), 3600.), 3600., 0);
2395 ev_periodic_start (loop, &hourly_tick); 2400 ev_periodic_start (loop, &hourly_tick);
2396 2401
2397 2402
2398=head2 C<ev_signal> - signal me when a signal gets signalled! 2403=head2 C<ev_signal> - signal me when a signal gets signalled!
2399 2404
2400Signal watchers will trigger an event when the process receives a specific 2405Signal watchers will trigger an event when the process receives a specific
2401signal one or more times. Even though signals are very asynchronous, libev 2406signal one or more times. Even though signals are very asynchronous, libev
2411only within the same loop, i.e. you can watch for C<SIGINT> in your 2416only within the same loop, i.e. you can watch for C<SIGINT> in your
2412default loop and for C<SIGIO> in another loop, but you cannot watch for 2417default loop and for C<SIGIO> in another loop, but you cannot watch for
2413C<SIGINT> in both the default loop and another loop at the same time. At 2418C<SIGINT> in both the default loop and another loop at the same time. At
2414the moment, C<SIGCHLD> is permanently tied to the default loop. 2419the moment, C<SIGCHLD> is permanently tied to the default loop.
2415 2420
2416When the first watcher gets started will libev actually register something 2421Only after the first watcher for a signal is started will libev actually
2417with the kernel (thus it coexists with your own signal handlers as long as 2422register something with the kernel. It thus coexists with your own signal
2418you don't register any with libev for the same signal). 2423handlers as long as you don't register any with libev for the same signal.
2419 2424
2420If possible and supported, libev will install its handlers with 2425If possible and supported, libev will install its handlers with
2421C<SA_RESTART> (or equivalent) behaviour enabled, so system calls should 2426C<SA_RESTART> (or equivalent) behaviour enabled, so system calls should
2422not be unduly interrupted. If you have a problem with system calls getting 2427not be unduly interrupted. If you have a problem with system calls getting
2423interrupted by signals you can block all signals in an C<ev_check> watcher 2428interrupted by signals you can block all signals in an C<ev_check> watcher
2905 2910
2906Prepare and check watchers are often (but not always) used in pairs: 2911Prepare and check watchers are often (but not always) used in pairs:
2907prepare watchers get invoked before the process blocks and check watchers 2912prepare watchers get invoked before the process blocks and check watchers
2908afterwards. 2913afterwards.
2909 2914
2910You I<must not> call C<ev_run> or similar functions that enter 2915You I<must not> call C<ev_run> (or similar functions that enter the
2911the current event loop from either C<ev_prepare> or C<ev_check> 2916current event loop) or C<ev_loop_fork> from either C<ev_prepare> or
2912watchers. Other loops than the current one are fine, however. The 2917C<ev_check> watchers. Other loops than the current one are fine,
2913rationale behind this is that you do not need to check for recursion in 2918however. The rationale behind this is that you do not need to check
2914those watchers, i.e. the sequence will always be C<ev_prepare>, blocking, 2919for recursion in those watchers, i.e. the sequence will always be
2915C<ev_check> so if you have one watcher of each kind they will always be 2920C<ev_prepare>, blocking, C<ev_check> so if you have one watcher of each
2916called in pairs bracketing the blocking call. 2921kind they will always be called in pairs bracketing the blocking call.
2917 2922
2918Their main purpose is to integrate other event mechanisms into libev and 2923Their main purpose is to integrate other event mechanisms into libev and
2919their use is somewhat advanced. They could be used, for example, to track 2924their use is somewhat advanced. They could be used, for example, to track
2920variable changes, implement your own watchers, integrate net-snmp or a 2925variable changes, implement your own watchers, integrate net-snmp or a
2921coroutine library and lots more. They are also occasionally useful if 2926coroutine library and lots more. They are also occasionally useful if
3211used). 3216used).
3212 3217
3213 struct ev_loop *loop_hi = ev_default_init (0); 3218 struct ev_loop *loop_hi = ev_default_init (0);
3214 struct ev_loop *loop_lo = 0; 3219 struct ev_loop *loop_lo = 0;
3215 ev_embed embed; 3220 ev_embed embed;
3216 3221
3217 // see if there is a chance of getting one that works 3222 // see if there is a chance of getting one that works
3218 // (remember that a flags value of 0 means autodetection) 3223 // (remember that a flags value of 0 means autodetection)
3219 loop_lo = ev_embeddable_backends () & ev_recommended_backends () 3224 loop_lo = ev_embeddable_backends () & ev_recommended_backends ()
3220 ? ev_loop_new (ev_embeddable_backends () & ev_recommended_backends ()) 3225 ? ev_loop_new (ev_embeddable_backends () & ev_recommended_backends ())
3221 : 0; 3226 : 0;
3235C<loop_socket>. (One might optionally use C<EVFLAG_NOENV>, too). 3240C<loop_socket>. (One might optionally use C<EVFLAG_NOENV>, too).
3236 3241
3237 struct ev_loop *loop = ev_default_init (0); 3242 struct ev_loop *loop = ev_default_init (0);
3238 struct ev_loop *loop_socket = 0; 3243 struct ev_loop *loop_socket = 0;
3239 ev_embed embed; 3244 ev_embed embed;
3240 3245
3241 if (ev_supported_backends () & ~ev_recommended_backends () & EVBACKEND_KQUEUE) 3246 if (ev_supported_backends () & ~ev_recommended_backends () & EVBACKEND_KQUEUE)
3242 if ((loop_socket = ev_loop_new (EVBACKEND_KQUEUE)) 3247 if ((loop_socket = ev_loop_new (EVBACKEND_KQUEUE))
3243 { 3248 {
3244 ev_embed_init (&embed, 0, loop_socket); 3249 ev_embed_init (&embed, 0, loop_socket);
3245 ev_embed_start (loop, &embed); 3250 ev_embed_start (loop, &embed);
3261and calls it in the wrong process, the fork handlers will be invoked, too, 3266and calls it in the wrong process, the fork handlers will be invoked, too,
3262of course. 3267of course.
3263 3268
3264=head3 The special problem of life after fork - how is it possible? 3269=head3 The special problem of life after fork - how is it possible?
3265 3270
3266Most uses of C<fork()> consist of forking, then some simple calls to set 3271Most uses of C<fork ()> consist of forking, then some simple calls to set
3267up/change the process environment, followed by a call to C<exec()>. This 3272up/change the process environment, followed by a call to C<exec()>. This
3268sequence should be handled by libev without any problems. 3273sequence should be handled by libev without any problems.
3269 3274
3270This changes when the application actually wants to do event handling 3275This changes when the application actually wants to do event handling
3271in the child, or both parent in child, in effect "continuing" after the 3276in the child, or both parent in child, in effect "continuing" after the
4095 void operator() (ev::io &w, int revents) 4100 void operator() (ev::io &w, int revents)
4096 { 4101 {
4097 ... 4102 ...
4098 } 4103 }
4099 } 4104 }
4100 4105
4101 myfunctor f; 4106 myfunctor f;
4102 4107
4103 ev::io w; 4108 ev::io w;
4104 w.set (&f); 4109 w.set (&f);
4105 4110

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines