X-Git-Url: https://git.llucax.com/software/libev.git/blobdiff_plain/1fb0a278db3f57899f7eb970a4fde56377b6d9c0..1bb2b69718177b8e0629011eefd932b9ef9ee219:/ev.pod diff --git a/ev.pod b/ev.pod index fae0718..f9b6a83 100644 --- a/ev.pod +++ b/ev.pod @@ -58,7 +58,9 @@ library in any way. =item ev_tstamp ev_time () -Returns the current time as libev would use it. +Returns the current time as libev would use it. Please note that the +C function is usually faster and also often returns the timestamp +you actually want to know. =item int ev_version_major () @@ -239,6 +241,24 @@ This flags value could be used to implement alternative looping constructs, but the C and C watchers provide a better and more generic mechanism. +Here are the gory details of what ev_loop does: + + 1. If there are no active watchers (reference count is zero), return. + 2. Queue and immediately call all prepare watchers. + 3. If we have been forked, recreate the kernel state. + 4. Update the kernel state with all outstanding changes. + 5. Update the "event loop time". + 6. Calculate for how long to block. + 7. Block the process, waiting for events. + 8. Update the "event loop time" and do time jump handling. + 9. Queue all outstanding timers. + 10. Queue all outstanding periodics. + 11. If no events are pending now, queue all idle watchers. + 12. Queue all check watchers. + 13. Call all queued watchers in reverse order (i.e. check watchers first). + 14. If ev_unloop has been called or EVLOOP_ONESHOT or EVLOOP_NONBLOCK + was used, return, otherwise continue with step #1. + =item ev_unloop (loop, how) Can be used to make a call to C return early (but only after it