---
name: "Mojo::IOLoop::ReadWriteProcess::Queue"
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::Queue"
---

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

Queue for Mojo::IOLoop::ReadWriteProcess objects.

## NAME

Mojo::IOLoop::ReadWriteProcess::Queue - Queue for Mojo::IOLoop::ReadWriteProcess objects.

## SYNOPSIS

```
    use Mojo::IOLoop::ReadWriteProcess qw(queue process);
    my $n_proc = 20;
    my $fired;
    my $q = queue;
    $q->pool->maximum_processes(2); # Max 2 processes in parallel
    $q->queue->maximum_processes(10); # Max queue is 10
    $q->add( process sub { return 42 } ) for 1..7;
    # Subscribe to all "stop" events in the pool
    $q->once(stop => sub { $fired++; });
    # Consume the queue
    $q->consume();
    my $all = $q->done; # All processes, Mojo::Collection of Mojo::IOLoop::ReadWriteProcess
    # Set your own running pool
    $q->pool(parallel sub { return 42 } => 5);
    # Set your own queue
    $q->queue(parallel sub { return 42 } => 20);
    $q->consume();
```

## METHODS

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

### add

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

Add the process to the queue.

### consume

```
    use Mojo::IOLoop::ReadWriteProcess qw(queue);
    my $q = queue();
    $q->add(sub { print "Hello 2! " });
    $q->add(process sub { print "Hello 2! " });
    $q->consume; # executes and exhaust the processes
```

Starts the processes and empties the queue. Note: maximum\_processes can be set both to the pool (number of process to be run in parallel), and for the queue (that gets exhausted during the `"consume()"` phase).

```
    $q->pool->maximum_processes(2); # Max 2 processes in parallel
    $q->queue->maximum_processes(10); # Max queue is 10
```

### exhausted

```
    use Mojo::IOLoop::ReadWriteProcess qw(queue);
    my $q = queue();
    $q->add(sub { print "Hello 2! " });
    $q->add(process sub { print "Hello 2! " });
    $q->consume; # executes and exhaust the processes
    $q->exhausted; # 1
```

Returns 1 if the queue is exhausted.

## ENVIRONMENT

You can set the MOJO\_PROCESS\_MAXIMUM\_PROCESSES environment variable to specify the the maximum number of processes allowed in the pool and the queue, that are Mojo::IOLoop::ReadWriteProcess::Pool 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\>
