work.log

元エンジニアの備忘録的ブログ

Coro::Channelでスレッド間のデータ送受信のメモ

投稿:2014-04-04 17:04  更新:

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

おすすめのVPSサーバ

  • OSが選べる
  • VPS同士でLANが組める
  • 複数台構成向き

このブログで使っています。

  • 転送量が多いサービスに
  • 借りてるのは3年間一度もdown無し!

よく見られている記事

  • 本日
  • 週間
  • 月間