Atomic-Pipe

 view release on metacpan or  search on metacpan

t/read_block.t  view on Meta::CPAN

}

my ($r, $w) = Atomic::Pipe->pair;

my $start = time;
worker { note_sleep 10; $w->write_message("aaa\n") };

sleep 2 if $^O eq 'MSWin32';

my $msg = $r->read_message;
ok(time - $start > 6, "Blocked");
is($msg, "aaa\n", "got the message");

cleanup();

$start = time;
worker { note_sleep 10; $w->write_message("bbb\n") };

sleep 2 if $^O eq 'MSWin32';

$r->blocking(0);

t/write_block.t  view on Meta::CPAN

cleanup();

worker { note_sleep 10; while (my $msg = $r->read_message) { last if $msg =~ m/END/i } };

$w->blocking(1);

$start = time;
for ( 0 .. $count ) {
    $w->write_message("aa" x PIPE_BUF);
}
ok(time - $start > 5, "Blocked");

$w->write_message("END");

delete $w->{out_buffer};

cleanup();
done_testing;



( run in 0.438 second using v1.01-cache-2.11-cpan-49f99fa48dc )