NAME
Mojo::IOLoop::Thread - Threaded Replacement for Mojo::IOLoop::Subprocess
SYNOPSIS
use Mojo::IOLoop::Thread;
# Operation that would block the event loop for 5 seconds
my $subprocess = Mojo::IOLoop::Thread->new;
$subprocess->run(
sub {
my $subprocess = shift;
sleep 5;
return '♥', 'Mojolicious';
},
sub {
my ($subprocess, $err, @results) = @_;
say "Subprocess error: $err" and return if $err;
say "I $results[0] $results[1]!";
}
);
# Start event loop if necessary
$subprocess->ioloop->start unless $subprocess->ioloop->is_running;
or
use Mojo::IOLoop;
use Mojo::IOLoop::Thread;
my $iol = Mojo::IOLoop->new;
$iol->subprocess(
sub {'♥'},
sub {
my ($subprocess, $err, @results) = @_;
say "Subprocess error: $err" and return if $err;
say @results;
}
);
$loop->start;
DESCRIPTION
Mojo::IOLoop::Thread is a multithreaded alternative for Mojo::IOLoop::Subprocess which is not available under Win32. It is a dropin replacement, takes the same parameters and works analoguous by just using threads instead of forked processes.
Mojo::IOLoop::Thread replaces "subprocess" in Mojo::IOLoop with a threaded version on module load.
BUGS and LIMITATIONS
exit_code
will not work like "exit_code" in Mojo::IOLoop::Subprocess because threads are not able to pass the exit code back when they are joined by the main thread. Additionally the exit code will be set when the subprocess is run with run_p
(see "run_p" in Mojo::IOLoop::Subprocess)
AUTHOR
Thomas Kratz <tomk@cpan.org>
REPOSITORY
https://github.com/tomk3003/mojo-ioloop-thread
COPYRIGHT
Copyright 2017-21 Thomas Kratz.
LICENSE
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.