Data-Monad-CondVar
view release on metacpan or search on metacpan
eg/bench_cv.pl view on Meta::CPAN
use Data::Monad::CondVar;
use Data::Monad::Base::Sugar;
use AnyEvent;
use Coro;
use Coro::AnyEvent;
use Benchmark qw(:hireswallclock);
my ($delay, $count) = @ARGV;
$delay //= 0;
$count //= 20000;
sub cv($) {
my $v = shift;
my $cv = AE::cv;
my $t; $t = AE::timer $delay, 0, sub {
$cv->($v);
undef $t;
};
return $cv;
}
sub bare_ae($$) {
t/condvar/ap.t view on Meta::CPAN
use strict;
use warnings;
use Data::Monad::CondVar;
use AnyEvent;
use Test::More;
sub cv($) {
my @v = @_;
my $cv = AE::cv;
my $t; $t = AE::timer .002, 0, sub {
$cv->(@v);
undef $t;
};
return $cv;
}
is cv(sub { $_[0] * 2 })->ap(cv 3)->recv, 6;
t/condvar/filter.t view on Meta::CPAN
use strict;
use warnings;
use Data::Monad::CondVar;
use AnyEvent;
use Test::More;
sub cv($) {
my $v = shift;
my $cv = AE::cv;
my $t; $t = AE::timer 0, 0, sub { $cv->($v); undef $t; };
return $cv;
}
is +(cv 3)->filter(sub { $_[0] > 2})->recv, 3;
eval { +(cv 1)->filter(sub { $_[0] > 2})->recv };
ok $@;
( run in 1.127 second using v1.01-cache-2.11-cpan-5b529ec07f3 )