|
|
|
@ -41,7 +41,7 @@ support for multiple event loops, then all functions taking an initial |
|
|
|
|
argument of name C<loop> (which is always of type C<struct ev_loop *>) |
|
|
|
|
will not have this argument. |
|
|
|
|
|
|
|
|
|
=head1 TIME AND OTHER GLOBAL FUNCTIONS |
|
|
|
|
=head1 TIME REPRESENTATION |
|
|
|
|
|
|
|
|
|
Libev represents time as a single floating point number, representing the |
|
|
|
|
(fractional) number of seconds since the (POSIX) epoch (somewhere near |
|
|
|
@ -49,6 +49,8 @@ the beginning of 1970, details are complicated, don't ask). This type is |
|
|
|
|
called C<ev_tstamp>, which is what you should use too. It usually aliases |
|
|
|
|
to the double type in C. |
|
|
|
|
|
|
|
|
|
=head1 GLOBAL FUNCTIONS |
|
|
|
|
|
|
|
|
|
=over 4 |
|
|
|
|
|
|
|
|
|
=item ev_tstamp ev_time () |
|
|
|
@ -101,7 +103,7 @@ types of such loops, the I<default> loop, which supports signals and child |
|
|
|
|
events, and dynamically created loops which do not. |
|
|
|
|
|
|
|
|
|
If you use threads, a common model is to run the default event loop |
|
|
|
|
in your main thread (or in a separate thrad) and for each thread you |
|
|
|
|
in your main thread (or in a separate thread) and for each thread you |
|
|
|
|
create, you also create another event loop. Libev itself does no locking |
|
|
|
|
whatsoever, so if you mix calls to the same event loop in different |
|
|
|
|
threads, make sure you lock (this is usually a bad idea, though, even if |
|
|
|
|