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

Comparing AnyEvent/README (file contents):
Revision 1.49 by root, Tue Jul 28 11:02:19 2009 UTC vs.
Revision 1.50 by root, Sat Aug 1 09:14:54 2009 UTC

173 Note that "my $w; $w =" combination. This is necessary because in Perl, 173 Note that "my $w; $w =" combination. This is necessary because in Perl,
174 my variables are only visible after the statement in which they are 174 my variables are only visible after the statement in which they are
175 declared. 175 declared.
176 176
177 I/O WATCHERS 177 I/O WATCHERS
178 $w = AnyEvent->io (
179 fh => <filehandle_or_fileno>,
180 poll => <"r" or "w">,
181 cb => <callback>,
182 );
183
178 You can create an I/O watcher by calling the "AnyEvent->io" method with 184 You can create an I/O watcher by calling the "AnyEvent->io" method with
179 the following mandatory key-value pairs as arguments: 185 the following mandatory key-value pairs as arguments:
180 186
181 "fh" is the Perl *file handle* (or a naked file descriptor) to watch for 187 "fh" is the Perl *file handle* (or a naked file descriptor) to watch for
182 events (AnyEvent might or might not keep a reference to this file 188 events (AnyEvent might or might not keep a reference to this file
210 warn "read: $input\n"; 216 warn "read: $input\n";
211 undef $w; 217 undef $w;
212 }); 218 });
213 219
214 TIME WATCHERS 220 TIME WATCHERS
221 $w = AnyEvent->timer (after => <seconds>, cb => <callback>);
222
223 $w = AnyEvent->timer (
224 after => <fractional_seconds>,
225 interval => <fractional_seconds>,
226 cb => <callback>,
227 );
228
215 You can create a time watcher by calling the "AnyEvent->timer" method 229 You can create a time watcher by calling the "AnyEvent->timer" method
216 with the following mandatory arguments: 230 with the following mandatory arguments:
217 231
218 "after" specifies after how many seconds (fractional values are 232 "after" specifies after how many seconds (fractional values are
219 supported) the callback should be invoked. "cb" is the callback to 233 supported) the callback should be invoked. "cb" is the callback to
343 the event loop's idea of "current time". 357 the event loop's idea of "current time".
344 358
345 Note that updating the time *might* cause some events to be handled. 359 Note that updating the time *might* cause some events to be handled.
346 360
347 SIGNAL WATCHERS 361 SIGNAL WATCHERS
362 $w = AnyEvent->signal (signal => <uppercase_signal_name>, cb => <callback>);
363
348 You can watch for signals using a signal watcher, "signal" is the signal 364 You can watch for signals using a signal watcher, "signal" is the signal
349 *name* in uppercase and without any "SIG" prefix, "cb" is the Perl 365 *name* in uppercase and without any "SIG" prefix, "cb" is the Perl
350 callback to be invoked whenever a signal occurs. 366 callback to be invoked whenever a signal occurs.
351 367
352 Although the callback might get passed parameters, their value and 368 Although the callback might get passed parameters, their value and
371 my $w = AnyEvent->signal (signal => "INT", cb => sub { exit 1 }); 387 my $w = AnyEvent->signal (signal => "INT", cb => sub { exit 1 });
372 388
373 Signal Races, Delays and Workarounds 389 Signal Races, Delays and Workarounds
374 Many event loops (e.g. Glib, Tk, Qt, IO::Async) do not support attaching 390 Many event loops (e.g. Glib, Tk, Qt, IO::Async) do not support attaching
375 callbacks to signals in a generic way, which is a pity, as you cannot do 391 callbacks to signals in a generic way, which is a pity, as you cannot do
376 race-free signal handling in perl. AnyEvent will try to do it's best, 392 race-free signal handling in perl, requiring C libraries for this.
377 but in some cases, signals will be delayed. The maximum time a signal 393 AnyEvent will try to do it's best, which means in some cases, signals
378 might be delayed is specified in $AnyEvent::MAX_SIGNAL_LATENCY (default: 394 will be delayed. The maximum time a signal might be delayed is specified
379 10 seconds). This variable can be changed only before the first signal 395 in $AnyEvent::MAX_SIGNAL_LATENCY (default: 10 seconds). This variable
380 watcher is created, and should be left alone otherwise. Higher values 396 can be changed only before the first signal watcher is created, and
397 should be left alone otherwise. This variable determines how often
398 AnyEvent polls for signals (in case a wake-up was missed). Higher values
381 will cause fewer spurious wake-ups, which is better for power and CPU 399 will cause fewer spurious wake-ups, which is better for power and CPU
400 saving.
401
382 saving. All these problems can be avoided by installing the optional 402 All these problems can be avoided by installing the optional
383 Async::Interrupt module. This will not work with inherently broken event 403 Async::Interrupt module, which works with most event loops. It will not
384 loops such as Event or Event::Lib (and not with POE currently, as POE 404 work with inherently broken event loops such as Event or Event::Lib (and
385 does it's own workaround with one-second latency). With those, you just 405 not with POE currently, as POE does it's own workaround with one-second
386 have to suffer the delays. 406 latency). For those, you just have to suffer the delays.
387 407
388 CHILD PROCESS WATCHERS 408 CHILD PROCESS WATCHERS
409 $w = AnyEvent->child (pid => <process id>, cb => <callback>);
410
389 You can also watch on a child process exit and catch its exit status. 411 You can also watch on a child process exit and catch its exit status.
390 412
391 The child process is specified by the "pid" argument (one some backends, 413 The child process is specified by the "pid" argument (one some backends,
392 using 0 watches for any child process exit, on others this will croak). 414 using 0 watches for any child process exit, on others this will croak).
393 The watcher will be triggered only when the child process has finished 415 The watcher will be triggered only when the child process has finished
439 461
440 # do something else, then wait for process exit 462 # do something else, then wait for process exit
441 $done->recv; 463 $done->recv;
442 464
443 IDLE WATCHERS 465 IDLE WATCHERS
466 $w = AnyEvent->idle (cb => <callback>);
467
444 Sometimes there is a need to do something, but it is not so important to 468 Sometimes there is a need to do something, but it is not so important to
445 do it instantly, but only when there is nothing better to do. This 469 do it instantly, but only when there is nothing better to do. This
446 "nothing better to do" is usually defined to be "no other events need 470 "nothing better to do" is usually defined to be "no other events need
447 attention by the event loop". 471 attention by the event loop".
448 472
473 } 497 }
474 }); 498 });
475 }); 499 });
476 500
477 CONDITION VARIABLES 501 CONDITION VARIABLES
502 $cv = AnyEvent->condvar;
503
504 $cv->send (<list>);
505 my @res = $cv->recv;
506
478 If you are familiar with some event loops you will know that all of them 507 If you are familiar with some event loops you will know that all of them
479 require you to run some blocking "loop", "run" or similar function that 508 require you to run some blocking "loop", "run" or similar function that
480 will actively watch for new events and call your callbacks. 509 will actively watch for new events and call your callbacks.
481 510
482 AnyEvent is slightly different: it expects somebody else to run the 511 AnyEvent is slightly different: it expects somebody else to run the
731 760
732 $cb = $cv->cb ($cb->($cv)) 761 $cb = $cv->cb ($cb->($cv))
733 This is a mutator function that returns the callback set and 762 This is a mutator function that returns the callback set and
734 optionally replaces it before doing so. 763 optionally replaces it before doing so.
735 764
736 The callback will be called when the condition becomes "true", i.e. 765 The callback will be called when the condition becomes (or already
737 when "send" or "croak" are called, with the only argument being the 766 was) "true", i.e. when "send" or "croak" are called (or were
738 condition variable itself. Calling "recv" inside the callback or at 767 called), with the only argument being the condition variable itself.
768 Calling "recv" inside the callback or at any later time is
739 any later time is guaranteed not to block. 769 guaranteed not to block.
740 770
741SUPPORTED EVENT LOOPS/BACKENDS 771SUPPORTED EVENT LOOPS/BACKENDS
742 The available backend classes are (every class has its own manpage): 772 The available backend classes are (every class has its own manpage):
743 773
744 Backends that are autoprobed when no other event loop can be found. 774 Backends that are autoprobed when no other event loop can be found.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines