---
name: "Mojo::IOLoop::ReadWriteProcess::Pool"
section: "3pm"
platform: "linux"
package: "libmojo-ioloop-readwriteprocess-perl"
version: "0.34-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Mojo::IOLoop::ReadWriteProcess::Pool"
---

# Mojo::IOLoop::ReadWriteProcess::Pool(3pm)

Pool of Mojo::IOLoop::ReadWriteProcess objects.

## NAME

Mojo::IOLoop::ReadWriteProcess::Pool - Pool of Mojo::IOLoop::ReadWriteProcess objects.

## SYNOPSIS

```
    use Mojo::IOLoop::ReadWriteProcess qw(parallel);
    my $n_proc = 20;
    my $fired;
    my $p = parallel sub { print "Hello world\n"; } => $n_proc;
    # Subscribe to all "stop" events in the pool
    $p->once(stop => sub { $fired++; });
    # Start all processes belonging to the pool
    $p->start();
    # Receive the process output
    $p->each(sub { my $p = shift; $p->getline(); });
    $p->wait_stop;
    # Get the last one! (it's a Mojo::Collection!)
    $p->last()->stop();
```

## METHODS

Mojo::IOLoop::ReadWriteProcess::Pool inherits all methods from Mojo::Collection and implements the following new ones. Note: It proxies all the other methods of Mojo::IOLoop::ReadWriteProcess for the whole process group.

### get

```
    use Mojo::IOLoop::ReadWriteProcess qw(parallel);
    my $pool = parallel(sub { print "Hello" } => 5);
    $pool->get(4);
```

Get the element specified in the pool (starting from 0).

### add

```
    use Mojo::IOLoop::ReadWriteProcess qw(pool);
    my $pool = pool(maximum_processes => 2);
    $pool->add(sub { print "Hello 2! " });
```

Add the element specified in the pool.

### remove

```
    use Mojo::IOLoop::ReadWriteProcess qw(parallel);
    my $pool = parallel(sub { print "Hello" } => 5);
    $pool->remove(4);
```

Remove the element specified in the pool.

### maximum\_processes

```
    use Mojo::IOLoop::ReadWriteProcess qw(parallel);
    my $pool = parallel(sub { print "Hello" } => 5);
    $pool->maximum_processes(30);
    $pool->add(...);
```

Prevent from adding processes to the pool. If we reach `"maximum_processes"` number of processes, `"add()"` will refuse to add more to the pool.

## ENVIRONMENT

You can set the MOJO\_PROCESS\_MAXIMUM\_PROCESSES environment variable to specify the the maximum number of processes allowed in Mojo::IOLoop::ReadWriteProcess instances.

```
    MOJO_PROCESS_MAXIMUM_PROCESSES=10000
```

## LICENSE

Copyright (C) Ettore Di Giacinto.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

## AUTHOR

Ettore Di Giacinto \<edigiacinto@suse.com\>
