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

Comparing AnyEvent/lib/AnyEvent.pm (file contents):
Revision 1.170 by root, Wed Jul 9 11:53:40 2008 UTC vs.
Revision 1.173 by root, Mon Jul 21 03:47:22 2008 UTC

6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9 use AnyEvent; 9 use AnyEvent;
10 10
11 my $w = AnyEvent->io (fh => $fh, poll => "r|w", cb => sub { 11 my $w = AnyEvent->io (fh => $fh, poll => "r|w", cb => sub { ... });
12 ...
13 });
14 12
15 my $w = AnyEvent->timer (after => $seconds, cb => sub { 13 my $w = AnyEvent->timer (after => $seconds, cb => sub { ... });
14 my $w = AnyEvent->timer (after => $seconds, interval => $seconds, cb => ...
15
16 print AnyEvent->now; # prints current event loop time
17 print AnyEvent->time; # think Time::HiRes::time or simply CORE::time.
18
19 my $w = AnyEvent->signal (signal => "TERM", cb => sub { ... });
20
21 my $w = AnyEvent->child (pid => $pid, cb => sub {
22 my ($pid, $status) = @_;
16 ... 23 ...
17 }); 24 });
18 25
19 my $w = AnyEvent->condvar; # stores whether a condition was flagged 26 my $w = AnyEvent->condvar; # stores whether a condition was flagged
20 $w->send; # wake up current and all future recv's 27 $w->send; # wake up current and all future recv's
21 $w->recv; # enters "main loop" till $condvar gets ->send 28 $w->recv; # enters "main loop" till $condvar gets ->send
29 # use a condvar in callback mode:
30 $w->cb (sub { $_[0]->recv });
22 31
23=head1 INTRODUCTION/TUTORIAL 32=head1 INTRODUCTION/TUTORIAL
24 33
25This manpage is mainly a reference manual. If you are interested 34This manpage is mainly a reference manual. If you are interested
26in a tutorial or some gentle introduction, have a look at the 35in a tutorial or some gentle introduction, have a look at the
380 389
381The instrument to do that is called a "condition variable", so called 390The instrument to do that is called a "condition variable", so called
382because they represent a condition that must become true. 391because they represent a condition that must become true.
383 392
384Condition variables can be created by calling the C<< AnyEvent->condvar 393Condition variables can be created by calling the C<< AnyEvent->condvar
394
385>> method, usually without arguments. The only argument pair allowed is 395>> method, usually without arguments. The only argument pair allowed is
396
386C<cb>, which specifies a callback to be called when the condition variable 397C<cb>, which specifies a callback to be called when the condition variable
387becomes true. 398becomes true, with the condition variable as the first argument (but not
399the results).
388 400
389After creation, the condition variable is "false" until it becomes "true" 401After creation, the condition variable is "false" until it becomes "true"
390by calling the C<send> method (or calling the condition variable as if it 402by calling the C<send> method (or calling the condition variable as if it
391were a callback, read about the caveats in the description for the C<< 403were a callback, read about the caveats in the description for the C<<
392->send >> method). 404->send >> method).
448 460
449 my $done = AnyEvent->condvar; 461 my $done = AnyEvent->condvar;
450 my $delay = AnyEvent->timer (after => 5, cb => $done); 462 my $delay = AnyEvent->timer (after => 5, cb => $done);
451 $done->recv; 463 $done->recv;
452 464
465Example: Imagine an API that returns a condvar and doesn't support
466callbacks. This is how you make a synchronous call, for example from
467the main program:
468
469 use AnyEvent::CouchDB;
470
471 ...
472
473 my @info = $couchdb->info->recv;
474
475And this is how you would just ste a callback to be called whenever the
476results are available:
477
478 $couchdb->info->cb (sub {
479 my @info = $_[0]->recv;
480 });
481
453=head3 METHODS FOR PRODUCERS 482=head3 METHODS FOR PRODUCERS
454 483
455These methods should only be used by the producing side, i.e. the 484These methods should only be used by the producing side, i.e. the
456code/module that eventually sends the signal. Note that it is also 485code/module that eventually sends the signal. Note that it is also
457the producer side which creates the condvar in most cases, but it isn't 486the producer side which creates the condvar in most cases, but it isn't
590=item $bool = $cv->ready 619=item $bool = $cv->ready
591 620
592Returns true when the condition is "true", i.e. whether C<send> or 621Returns true when the condition is "true", i.e. whether C<send> or
593C<croak> have been called. 622C<croak> have been called.
594 623
595=item $cb = $cv->cb ([new callback]) 624=item $cb = $cv->cb ($cb->($cv))
596 625
597This is a mutator function that returns the callback set and optionally 626This is a mutator function that returns the callback set and optionally
598replaces it before doing so. 627replaces it before doing so.
599 628
600The callback will be called when the condition becomes "true", i.e. when 629The callback will be called when the condition becomes "true", i.e. when
826no warnings; 855no warnings;
827use strict; 856use strict;
828 857
829use Carp; 858use Carp;
830 859
831our $VERSION = 4.2; 860our $VERSION = 4.22;
832our $MODEL; 861our $MODEL;
833 862
834our $AUTOLOAD; 863our $AUTOLOAD;
835our @ISA; 864our @ISA;
836 865

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines