BGS

 view release on metacpan or  search on metacpan

BGS.pm  view on Meta::CPAN


	if ($limit > 0 and keys %fh2data >= $limit) {
		push @to_call, $data;
	} else {
		_call($data);
	}

	return $data;
}

sub bgs_call(&$) {
	my ($sub, $callback) = @_;

	my $data = _bgs_call($sub, $callback);

	return $$data{vpid};
}

sub bgs_back(&) { shift }


sub bgs_wait(;$) {
	my ($waited) = @_;

	if ($waited and not exists $vpid2data{$waited} and not grep { $$_{vpid} eq $waited } @to_call) {
		return;
	}

	local $SIG{PIPE} = "IGNORE";

BGS/Future.pm  view on Meta::CPAN

	}
}


sub cancel {
	my $self = shift;
	BGS::bgs_break($$self{vpid});
}


sub future(&) {
	__PACKAGE__->new($_[0]);
}


1;


__END__


BGS/Limit.pm  view on Meta::CPAN

our @ISA = qw(Exporter);
our @EXPORT = qw(bgs_call bgs_back bgs_wait bgs_break);

our $VERSION = '0.12';

use BGS ();


my @jobs = (); 

sub bgs_call(&$) { push @jobs, \@_ }
sub bgs_back(&)  { shift }


sub do_job {
 	my $job = shift @jobs or return;
	my ($sub, $callback) = @$job;
	&BGS::bgs_call($sub, sub {
 		my $r = shift;
		$callback->($r);
		do_job();
 	});



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