NAME
Thread::Csp - Communicating sequential processes threading for Perl
VERSION
version 0.001
SYNOPSIS
# in script.pl
use Thread::Csp;
my $input = Thread::Csp::channel->new;
my $output = Thread::Csp::channel->new;
Thread::Csp->spawn('Module', 'Module::function', $input, $output);
while (<>) {
$input->send($_);
print $output->receive;
}
$input->send(undef);
# in Module.pm
package Module;
sub function {
my ($input, $output) = @_;
while (defined(my $entry = $input->receive)) {
$output->send(2 * $entry);
}
}
1;
DESCRIPTION
This module implements share-nothing threads for perl. One crucial difference with threads.pm
threads is that the original thread will not be cloned except for the arguments that you pass on thread creation. Channels are used for inter-thread communication one or more channels will nearly always be such creation arguments).
Please note that this module is a research project. In no way is API stability guaranteed. It is released for evaluation purposes only, not for production usage.
METHODS
spawn($module, $sub, @args)
Spawn a new thread. It will load $module and then run $sub
(fully-qualified function name) with @args
as arguments. It returns a Thread::Csp::Promise that will finish when the thread is finished.
AUTHOR
Leon Timmermans <leont@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2021 by Leon Timmermans.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.