NAME

Thread::GoChannel - Fast thread queues with go-like semantics

VERSION

version 0.001

SYNOPSIS

use threads;
use Thread::GoChannel;
my $channel = Thread::GoChannel->new;

my $reader = threads->create(sub {
    while (my $line = <>) {
        $channel->send($line)
    }
    $channel->close;
});

while (defined(my $line = $channel->receive)) {
    print $line;
}
$reader->join;

DESCRIPTION

Thread::GoChannel is an alternative to Thread::Queue. By using a smart serialization ladder, it can achieve high performance without compromizing on flexibility.

METHODS

new()

This constructs a new channel.

send($message)

This sends the message $message to the channel. It will wait until there is a receiver.

receive()

Received a message from the channel, it will wait until a message arrives, or return undef if the channel is closed.

close()

Closes the channel for further messages.

SEE ALSO

  • Thread::Queue

  • Thread::Channel

AUTHOR

Leon Timmermans <fawaka@gmail.com>

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.