ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.pm
(Generate patch)

Comparing EV/EV.pm (file contents):
Revision 1.110 by root, Wed Dec 24 22:05:58 2008 UTC vs.
Revision 1.116 by root, Sat Jun 13 15:11:54 2009 UTC

80 80
81no warnings; 81no warnings;
82use strict; 82use strict;
83 83
84BEGIN { 84BEGIN {
85 our $VERSION = '3.51'; 85 our $VERSION = '3.6';
86 use XSLoader; 86 use XSLoader;
87 XSLoader::load "EV", $VERSION; 87 XSLoader::load "EV", $VERSION;
88} 88}
89 89
90@EV::IO::ISA = 90@EV::IO::ISA =
125will then also service the kqueue loop to some extent. See the example in 125will then also service the kqueue loop to some extent. See the example in
126the section about embed watchers for an example on how to achieve that. 126the section about embed watchers for an example on how to achieve that.
127 127
128=over 4 128=over 4
129 129
130=item $loop = new EV::loop [$flags] 130=item $loop = new EV::Loop [$flags]
131 131
132Create a new event loop as per the specified flags. Please refer to 132Create a new event loop as per the specified flags. Please refer to
133the C<ev_loop_new ()> function description in the libev documentation 133the C<ev_loop_new ()> function description in the libev documentation
134(L<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#GLOBAL_FUNCTIONS>, 134(L<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#GLOBAL_FUNCTIONS>,
135or locally-installed as F<EV::libev> manpage) for more info. 135or locally-installed as F<EV::libev> manpage) for more info.
201=item $time = $loop->now 201=item $time = $loop->now
202 202
203Returns the time the last event loop iteration has been started. This 203Returns the time the last event loop iteration has been started. This
204is the time that (relative) timers are based on, and referring to it is 204is the time that (relative) timers are based on, and referring to it is
205usually faster then calling EV::time. 205usually faster then calling EV::time.
206
207=item EV::now_update
208
209=item $loop->now_update
210
211Establishes the current time by querying the kernel, updating the time
212returned by C<EV::now> in the progress. This is a costly operation and
213is usually done automatically within C<EV::loop>.
214
215This function is rarely useful, but when some event callback runs for a
216very long time without entering the event loop, updating libev's idea of
217the current time is a good idea.
218
219=item EV::suspend
220
221=item $loop->suspend
222
223=item EV::resume
224
225=item $loop->resume
226
227These two functions suspend and resume a loop, for use when the loop is
228not used for a while and timeouts should not be processed.
229
230A typical use case would be an interactive program such as a game: When
231the user presses C<^Z> to suspend the game and resumes it an hour later it
232would be best to handle timeouts as if no time had actually passed while
233the program was suspended. This can be achieved by calling C<suspend>
234in your C<SIGTSTP> handler, sending yourself a C<SIGSTOP> and calling
235C<resume> directly afterwards to resume timer processing.
236
237Effectively, all C<timer> watchers will be delayed by the time spend
238between C<suspend> and C<resume>, and all C<periodic> watchers
239will be rescheduled (that is, they will lose any events that would have
240occured while suspended).
241
242After calling C<suspend> you B<must not> call I<any> function on the given
243loop other than C<resume>, and you B<must not> call C<resume>
244without a previous call to C<suspend>.
245
246Calling C<suspend>/C<resume> has the side effect of updating the event
247loop time (see C<now_update>).
206 248
207=item $backend = EV::backend 249=item $backend = EV::backend
208 250
209=item $backend = $loop->backend 251=item $backend = $loop->backend
210 252
1002 1044
1003=back 1045=back
1004 1046
1005=head3 ASYNC WATCHERS - how to wake up another event loop 1047=head3 ASYNC WATCHERS - how to wake up another event loop
1006 1048
1007Async watchers are provided by EV, but have little use in perl directly, as perl 1049Async watchers are provided by EV, but have little use in perl directly,
1008neither supports threads nor direct access to signal handlers or other 1050as perl neither supports threads running in parallel nor direct access to
1009contexts where they could be of value. 1051signal handlers or other contexts where they could be of value.
1010 1052
1011It is, however, possible to use them from the XS level. 1053It is, however, possible to use them from the XS level.
1012 1054
1013Please see the libev documentation for further details. 1055Please see the libev documentation for further details.
1014 1056
1042 my $async_check = EV::check sub { }; 1084 my $async_check = EV::check sub { };
1043 1085
1044This ensures that perl gets into control for a short time to handle any 1086This ensures that perl gets into control for a short time to handle any
1045pending signals, and also ensures (slightly) slower overall operation. 1087pending signals, and also ensures (slightly) slower overall operation.
1046 1088
1047=head1 THREADS 1089=head1 ITHREADS
1048 1090
1049Threads are not supported by this module in any way. Perl pseudo-threads 1091Ithreads are not supported by this module in any way. Perl pseudo-threads
1050is evil stuff and must die. As soon as Perl gains real threads I will work 1092is evil stuff and must die. Real threads as provided by Coro are fully
1051on thread support for it. 1093supported (and enhanced support is available via L<Coro::EV>).
1052 1094
1053=head1 FORK 1095=head1 FORK
1054 1096
1055Most of the "improved" event delivering mechanisms of modern operating 1097Most of the "improved" event delivering mechanisms of modern operating
1056systems have quite a few problems with fork(2) (to put it bluntly: it is 1098systems have quite a few problems with fork(2) (to put it bluntly: it is

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines