AnyEvent-Tools
view release on metacpan or search on metacpan
t/01_mutex.t view on Meta::CPAN
#!/usr/bin/perl
use warnings;
use strict;
use utf8;
use open qw(:std :utf8);
use lib qw(lib ../lib);
use Test::More tests => 9;
use Encode qw(decode encode);
use Time::HiRes qw(time);
BEGIN {
# ÐодгоÑовка обÑекÑа ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑабоÑÑ Ñ utf8
my $builder = Test::More->builder;
binmode $builder->output, ":utf8";
binmode $builder->failure_output, ":utf8";
binmode $builder->todo_output, ":utf8";
use_ok 'AnyEvent';
use_ok 'AnyEvent::Tools', ':mutex';
}
{
my $mutex = mutex;
my ($counter, $total) = (0, 0);
my $cv = condvar AnyEvent;
my ($timer1, $timer2, $timer3);
$timer1 = AE::timer 0, 0.2 => sub {
$total++;
if ($mutex->is_locked) {
$counter++;
}
};
$timer2 = AE::timer 1, 0 => sub {
$mutex->lock(sub {
my ($g) = @_;
undef $timer2;
my $timer;
$timer = AE::timer 2, 0 => sub {
undef $g;
undef $timer;
};
});
return;
};
$timer3 = AE::timer 5, 0 => sub {
$cv->send;
};
$cv->recv;
ok $counter < 13 && $counter > 8,
"Mutex was locked correct time ($counter/$total)";
}
{
my $cv = condvar AnyEvent;
my $mutex = mutex;
my $idle;
( run in 1.775 second using v1.01-cache-2.11-cpan-39bf76dae61 )