threads-lite
view release on metacpan or search on metacpan
lib/threads/lite.pm view on Meta::CPAN
return;
}
else {
my $ret = @mailbox ? shift @mailbox : _receive_nb;
return $ret ? _return_elements($ret) : $ret;
}
}
## no critic (Subroutines::RequireArgUnpacking,Subroutines::ProhibitSubroutinePrototypes)
sub receive(&) {
my $receive = shift;
my @save;
my $i = 0;
MESSAGE:
while (1) {
my $message;
if ($i < @mailbox) {
$message = splice @mailbox, $i, 1, @save;
$i += @save;
lib/threads/lite.pm view on Meta::CPAN
$receive->();
@save = ($message);
next MESSAGE;
}
continue {
return _return_elements($message);
}
}
}
sub receive_nb(&) {
my $receive = shift;
my @save;
my $i = 0;
MESSAGE:
while (1) {
my $message;
if ($i < @mailbox) {
$message = splice @mailbox, $i, 1, @save;
$i += @save;
lib/threads/lite/list.pm view on Meta::CPAN
my @ret;
for my $i (0..$#args) {
push @ret, $args[$i] if $values[$i];
}
return @ret;
}
## no critic (Subroutines::ProhibitSubroutinePrototypes)
sub parallel_map(&@) {
my ($code, $options, @args) = @_;
my $object = __PACKAGE__->new(($options ? %{$options} : ()), code => $code);
return $object->map(@args);
}
sub parallel_grep(&@) {
my ($code, $options, @args) = @_;
my $object = __PACKAGE__->new(($options ? %{$options} : ()), code => $code);
return $object->grep(@args);
}
sub DESTROY {
my $self = shift;
for my $thread (values %{$self}) {
$thread->send('kill');
receiveq('exit', qr//, $thread->id, undef);
( run in 0.717 second using v1.01-cache-2.11-cpan-49f99fa48dc )