… | |
… | |
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 | |
25 | This manpage is mainly a reference manual. If you are interested |
34 | This manpage is mainly a reference manual. If you are interested |
26 | in a tutorial or some gentle introduction, have a look at the |
35 | in a tutorial or some gentle introduction, have a look at the |
… | |
… | |
380 | |
389 | |
381 | The instrument to do that is called a "condition variable", so called |
390 | The instrument to do that is called a "condition variable", so called |
382 | because they represent a condition that must become true. |
391 | because they represent a condition that must become true. |
383 | |
392 | |
384 | Condition variables can be created by calling the C<< AnyEvent->condvar |
393 | Condition 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 | |
386 | C<cb>, which specifies a callback to be called when the condition variable |
397 | C<cb>, which specifies a callback to be called when the condition variable |
387 | becomes true. |
398 | becomes true, with the condition variable as the first argument (but not |
|
|
399 | the results). |
388 | |
400 | |
389 | After creation, the condition variable is "false" until it becomes "true" |
401 | After creation, the condition variable is "false" until it becomes "true" |
390 | by calling the C<send> method (or calling the condition variable as if it |
402 | by calling the C<send> method (or calling the condition variable as if it |
391 | were a callback, read about the caveats in the description for the C<< |
403 | were 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 | |
|
|
465 | Example: Imagine an API that returns a condvar and doesn't support |
|
|
466 | callbacks. This is how you make a synchronous call, for example from |
|
|
467 | the main program: |
|
|
468 | |
|
|
469 | use AnyEvent::CouchDB; |
|
|
470 | |
|
|
471 | ... |
|
|
472 | |
|
|
473 | my @info = $couchdb->info->recv; |
|
|
474 | |
|
|
475 | And this is how you would just ste a callback to be called whenever the |
|
|
476 | results 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 | |
455 | These methods should only be used by the producing side, i.e. the |
484 | These methods should only be used by the producing side, i.e. the |
456 | code/module that eventually sends the signal. Note that it is also |
485 | code/module that eventually sends the signal. Note that it is also |
457 | the producer side which creates the condvar in most cases, but it isn't |
486 | the 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 | |
592 | Returns true when the condition is "true", i.e. whether C<send> or |
621 | Returns true when the condition is "true", i.e. whether C<send> or |
593 | C<croak> have been called. |
622 | C<croak> have been called. |
594 | |
623 | |
595 | =item $cb = $cv->cb ([new callback]) |
624 | =item $cb = $cv->cb ($cb->($cv)) |
596 | |
625 | |
597 | This is a mutator function that returns the callback set and optionally |
626 | This is a mutator function that returns the callback set and optionally |
598 | replaces it before doing so. |
627 | replaces it before doing so. |
599 | |
628 | |
600 | The callback will be called when the condition becomes "true", i.e. when |
629 | The callback will be called when the condition becomes "true", i.e. when |
… | |
… | |
826 | no warnings; |
855 | no warnings; |
827 | use strict; |
856 | use strict; |
828 | |
857 | |
829 | use Carp; |
858 | use Carp; |
830 | |
859 | |
831 | our $VERSION = 4.21; |
860 | our $VERSION = 4.22; |
832 | our $MODEL; |
861 | our $MODEL; |
833 | |
862 | |
834 | our $AUTOLOAD; |
863 | our $AUTOLOAD; |
835 | our @ISA; |
864 | our @ISA; |
836 | |
865 | |