---
name: "IO::Async::DetachedCode"
section: "3pm"
platform: "linux"
package: "libio-async-perl"
version: "0.51-4"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/IO::Async::DetachedCode"
---

# IO::Async::DetachedCode(3pm)

execute code asynchronously in child processes

## 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\>
