NAME
Mojo::IOLoop::ReadWriteProcess::Pool - Pool of Mojo::IOLoop::ReadWriteProcess objects.
SYNOPSIS
my
$n_proc
= 20;
my
$fired
;
my
$p
= parallel
sub
{
"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
my
$pool
= parallel(
sub
{
"Hello"
} => 5);
$pool
->get(4);
Get the element specified in the pool (starting from 0).
add
my
$pool
= pool(
maximum_processes
=> 2);
$pool
->add(
sub
{
"Hello 2! "
});
Add the element specified in the pool.
remove
my
$pool
= parallel(
sub
{
"Hello"
} => 5);
$pool
->remove(4);
Remove the element specified in the pool.
maximum_processes
my
$pool
= parallel(
sub
{
"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>