NAME¶
"IO::Async::DetachedCode" - execute code asynchronously in child
processes
SYNOPSIS¶
This object is used indirectly via the "IO::Async::Loop"'s
"detach_code" method.
use IO::Async::Loop;
my $loop = IO::Async::Loop->new;
my $code = $loop->detach_code(
code => sub {
my ( $number ) = @_;
return is_prime( $number );
}
);
$code->call(
args => [ 123454321 ],
on_return => sub {
my $isprime = shift;
print "123454321 " . ( $isprime ? "is" : "is not" ) . " a prime number\n";
},
on_error => sub {
print STDERR "Cannot determine if it's prime - $_[0]\n";
},
);
$loop->run;
DESCRIPTION¶
This object class provides a legacy compatibility layer for existing code that
tries to construct such an object. It should not be used for new code; see
instead the IO::Async::Function object, for which this is now a wrapper.
CONSTRUCTOR¶
$code = $loop->detach_code( %params )¶
This function returns a new instance of a "IO::Async::DetachedCode"
object. The %params hash takes the following keys:
- code => CODE
- A block of code to call in the child process.
- stream
- marshaller
- These arguments are no longer used; any values passed will
be ignored.
- workers => INT
- Optional integer, specifies the number of parallel workers
to create.
If not supplied, 1 is used.
- exit_on_die => BOOL
- setup => ARRAY
- Passed through to the underlying
"IO::Async::Function" object.
METHODS¶
$code->call( %params )¶
Calls one invocation of the contained function code block. See the
"call" method on "IO::Async::Function" for more detail.
$code->shutdown¶
This method requests that the detached worker processes stop running.
$n_workers = $code->workers¶
This method in scalar context returns the number of workers currently running.
@worker_pids = $code->workers¶
This method in list context returns a list of the PID numbers of all the
currently running worker processes.
AUTHOR¶
Paul Evans <leonerd@leonerd.org.uk>