IO::Async::DetachedCode(3pm)

IO::Async::DetachedCode3pm

Execute code asynchronously in child processes

Usage

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;

Overview

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.

Releases

2 releases since Debian 6.0 (Squeeze); the text changed 1 time.

  1. 6.0
  2. 7

Author

Paul Evans <[email protected]>

From libio-async-perl 0.51-4 in Debian 7 (Wheezy). Parsed by carta from the page's man source.