NAME
Mojo::IOLoop::ReadWriteProcess::Queue - Queue for Mojo::IOLoop::ReadWriteProcess objects.
SYNOPSIS
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
my
$q
= queue();
$q
->add(
sub
{
"Hello 2! "
});
$q
->add(process
sub
{
"Hello 2! "
});
Add the process to the queue.
consume
my
$q
= queue();
$q
->add(
sub
{
"Hello 2! "
});
$q
->add(process
sub
{
"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
my
$q
= queue();
$q
->add(
sub
{
"Hello 2! "
});
$q
->add(process
sub
{
"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>