Coro のメモ書き。
Coro で作成したスレッド間でデータの送受信を行うには Coro::Channel が便利。
#!/usr/bin/perl use strict; use warnings; use Coro; my @msg = ( '1 message', '2 message', '3 message', ); my $ch = Coro::Channel->new; async { while ( my $msg = $ch->get ) { print "receive: $msg\n"; } }; for my $msg (@msg) { print "send: $msg\n"; $ch->put($msg); } schedule;
put で渡して get で受信といった具合に使える。get は put でデータが送られてくるまで待つのでブロッキングとしても使えるようです。
実行結果はこんな感じ。
send: 1 message send: 2 message send: 3 message receive: 1 message receive: 2 message receive: 3 message