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

Comparing EV/README (file contents):
Revision 1.32 by root, Tue Apr 28 00:50:57 2009 UTC vs.
Revision 1.33 by root, Fri Jul 17 14:49:33 2009 UTC

2 EV - perl interface to libev, a high performance full-featured event 2 EV - perl interface to libev, a high performance full-featured event
3 loop 3 loop
4 4
5SYNOPSIS 5SYNOPSIS
6 use EV; 6 use EV;
7 7
8 # TIMERS 8 # TIMERS
9 9
10 my $w = EV::timer 2, 0, sub { 10 my $w = EV::timer 2, 0, sub {
11 warn "is called after 2s"; 11 warn "is called after 2s";
12 }; 12 };
13 13
14 my $w = EV::timer 2, 2, sub { 14 my $w = EV::timer 2, 2, sub {
15 warn "is called roughly every 2s (repeat = 2)"; 15 warn "is called roughly every 2s (repeat = 2)";
16 }; 16 };
17 17
18 undef $w; # destroy event watcher again 18 undef $w; # destroy event watcher again
19 19
20 my $w = EV::periodic 0, 60, 0, sub { 20 my $w = EV::periodic 0, 60, 0, sub {
21 warn "is called every minute, on the minute, exactly"; 21 warn "is called every minute, on the minute, exactly";
22 }; 22 };
23
23 24 # IO
24 # IO 25
25
26 my $w = EV::io *STDIN, EV::READ, sub { 26 my $w = EV::io *STDIN, EV::READ, sub {
27 my ($w, $revents) = @_; # all callbacks receive the watcher and event mask 27 my ($w, $revents) = @_; # all callbacks receive the watcher and event mask
28 warn "stdin is readable, you entered: ", <STDIN>; 28 warn "stdin is readable, you entered: ", <STDIN>;
29 }; 29 };
30 30
31 # SIGNALS 31 # SIGNALS
32 32
33 my $w = EV::signal 'QUIT', sub { 33 my $w = EV::signal 'QUIT', sub {
34 warn "sigquit received\n"; 34 warn "sigquit received\n";
35 }; 35 };
36 36
37 # CHILD/PID STATUS CHANGES 37 # CHILD/PID STATUS CHANGES
38 38
39 my $w = EV::child 666, 0, sub { 39 my $w = EV::child 666, 0, sub {
40 my ($w, $revents) = @_; 40 my ($w, $revents) = @_;
41 my $status = $w->rstatus; 41 my $status = $w->rstatus;
42 }; 42 };
43 43
44 # STAT CHANGES 44 # STAT CHANGES
45 my $w = EV::stat "/etc/passwd", 10, sub { 45 my $w = EV::stat "/etc/passwd", 10, sub {
46 my ($w, $revents) = @_; 46 my ($w, $revents) = @_;
47 warn $w->path, " has changed somehow.\n"; 47 warn $w->path, " has changed somehow.\n";
48 }; 48 };
49 49
50 # MAINLOOP 50 # MAINLOOP
51 EV::loop; # loop until EV::unloop is called or all watchers stop 51 EV::loop; # loop until EV::unloop is called or all watchers stop
52 EV::loop EV::LOOP_ONESHOT; # block until at least one event could be handled 52 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 53 EV::loop EV::LOOP_NONBLOCK; # try to handle same events, but do not block
54 54
55DESCRIPTION 55DESCRIPTION
262 for I/O events and the minimum wait interval for timer events. See 262 for I/O events and the minimum wait interval for timer events. See
263 the libev documentation at 263 the libev documentation at
264 <http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#FUNCTIONS_CONT 264 <http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#FUNCTIONS_CONT
265 ROLLING_THE_EVENT_LOOP> (locally installed as EV::libev) for a more 265 ROLLING_THE_EVENT_LOOP> (locally installed as EV::libev) for a more
266 detailed discussion. 266 detailed discussion.
267
268 $count = EV::pending_count
269 $count = $loop->pending_count
270 Returns the number of currently pending watchers.
271
272 EV::invoke_pending
273 $loop->invoke_pending
274 Invoke all currently pending watchers.
267 275
268WATCHER OBJECTS 276WATCHER OBJECTS
269 A watcher is an object that gets created to record your interest in some 277 A watcher is an object that gets created to record your interest in some
270 event. For instance, if you want to wait for STDIN to become readable, 278 event. For instance, if you want to wait for STDIN to become readable,
271 you would create an EV::io watcher for that: 279 you would create an EV::io watcher for that:
820 828
821 In short, this watcher is most useful on BSD systems without working 829 In short, this watcher is most useful on BSD systems without working
822 kqueue to still be able to handle a large number of sockets: 830 kqueue to still be able to handle a large number of sockets:
823 831
824 my $socket_loop; 832 my $socket_loop;
825 833
826 # check wether we use SELECT or POLL _and_ KQUEUE is supported 834 # check wether we use SELECT or POLL _and_ KQUEUE is supported
827 if ( 835 if (
828 (EV::backend & (EV::BACKEND_POLL | EV::BACKEND_SELECT)) 836 (EV::backend & (EV::BACKEND_POLL | EV::BACKEND_SELECT))
829 && (EV::supported_backends & EV::embeddable_backends & EV::BACKEND_KQUEUE) 837 && (EV::supported_backends & EV::embeddable_backends & EV::BACKEND_KQUEUE)
830 ) { 838 ) {
831 # use kqueue for sockets 839 # use kqueue for sockets
832 $socket_loop = new EV::Loop EV::BACKEND_KQUEUE | EV::FLAG_NOENV; 840 $socket_loop = new EV::Loop EV::BACKEND_KQUEUE | EV::FLAG_NOENV;
833 } 841 }
834 842
835 # use the default loop otherwise 843 # use the default loop otherwise
836 $socket_loop ||= EV::default_loop; 844 $socket_loop ||= EV::default_loop;
837 845
838 $w = EV::embed $otherloop[, $callback] 846 $w = EV::embed $otherloop[, $callback]
839 $w = EV::embed_ns $otherloop[, $callback] 847 $w = EV::embed_ns $otherloop[, $callback]
840 $w = $loop->embed ($otherloop[, $callback]) 848 $w = $loop->embed ($otherloop[, $callback])
847 The "embed_ns" variant doesn't start (activate) the newly created 855 The "embed_ns" variant doesn't start (activate) the newly created
848 watcher. 856 watcher.
849 857
850 ASYNC WATCHERS - how to wake up another event loop 858 ASYNC WATCHERS - how to wake up another event loop
851 Async watchers are provided by EV, but have little use in perl directly, 859 Async watchers are provided by EV, but have little use in perl directly,
852 as perl neither supports threads nor direct access to signal handlers or 860 as perl neither supports threads running in parallel nor direct access
853 other contexts where they could be of value. 861 to signal handlers or other contexts where they could be of value.
854 862
855 It is, however, possible to use them from the XS level. 863 It is, however, possible to use them from the XS level.
856 864
857 Please see the libev documentation for further details. 865 Please see the libev documentation for further details.
858 866
877 my $async_check = EV::check sub { }; 885 my $async_check = EV::check sub { };
878 886
879 This ensures that perl gets into control for a short time to handle any 887 This ensures that perl gets into control for a short time to handle any
880 pending signals, and also ensures (slightly) slower overall operation. 888 pending signals, and also ensures (slightly) slower overall operation.
881 889
882THREADS 890ITHREADS
883 Threads are not supported by this module in any way. Perl pseudo-threads 891 Ithreads are not supported by this module in any way. Perl
884 is evil stuff and must die. As soon as Perl gains real threads I will 892 pseudo-threads is evil stuff and must die. Real threads as provided by
885 work on thread support for it. 893 Coro are fully supported (and enhanced support is available via
894 Coro::EV).
886 895
887FORK 896FORK
888 Most of the "improved" event delivering mechanisms of modern operating 897 Most of the "improved" event delivering mechanisms of modern operating
889 systems have quite a few problems with fork(2) (to put it bluntly: it is 898 systems have quite a few problems with fork(2) (to put it bluntly: it is
890 not supported and usually destructive). Libev makes it possible to work 899 not supported and usually destructive). Libev makes it possible to work

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines