タグ

coroに関するhide-Kのブックマーク (12)

  • Perl で作成した RabbitMQ 専用クライアントライブラリを AnyEvent と Coro で非同期化しました - cooldaemonの備忘録

    以前、AMQP と RabbitMQ を学ぶために RabbitFoot という名前の Perl 版のクライアントライブラリを作成したのですが、非同期化して欲しいと要望を頂いたので、AnyEvent と Coro を利用してみました。 AnyEvent と Coro は、今回、初めての利用となるため、識者からの厳しいツッコミがあると嬉しいです。 cooldaemon's RabbitFoot at master - GitHub Consume 用の Channel を五つ、Publish 用の Channel を一つ開き、Channel 間でメッセージを送受信する例は、下記の通りです。 use Coro; use RabbitFoot; my $rf = RabbitFoot->new()->load_xml_spec( '/path/to/fixed_amqp0-8.xml', )->

    Perl で作成した RabbitMQ 専用クライアントライブラリを AnyEvent と Coro で非同期化しました - cooldaemonの備忘録
  • Coroでスレッドプールを使う - Pixel Pedals of Tomakomai

    Coroでスレッドプールを使うにはasync_poolを使えばいいはずなのですが、何も考えずに使うとうまくいかない場合があります。 最初にまとめ 長いのでまずまとめときます。まとめると単純な話で、「async_poolを使う時には、同時にたくさんのスレッドを利用し過ぎないように気をつける」の一点に尽きます。 ベンチマークをとってみる asyncとasync_pool でベンチマークをとってみると、以下のようになります。 my $tasks = 100; Benchmark::cmpthese 1000, { async => sub { my $sem = Coro::Semaphore->new( 1 - $tasks ); for(1 .. $tasks){ async { $sem->up }; } $sem->down; }, async_pool => sub { my $sem

    Coroでスレッドプールを使う - Pixel Pedals of Tomakomai
    hide-K
    hide-K 2009/12/20
  • CoroとAnyEventを一緒に使うならunblock_subを覚えておくべき - Pixel Pedals of Tomakomai

    以前に、 なお、(2)でフロントエンドの処理を書く時は(0)のバックエンドとは逆に、AnyEventは直接使わない方が無難だと思います。理由は、AnyEventのイベントループからはCoroの層の関数が使えないからです。 Coro::AnyEventでフロントエンドをコールバックを使わずに書く なんて書いてたので、多少追記を。 CoroとAnyEventの相性 これは、非常によいです。 Coroは use Coro::AnyEvent とか明示的にしなくても、内部でAnyEventを使っています。例えば、Coro::Timer::sleepは制御を他スレッドに渡してその後自分のスレッドに戻ってくるという動きをしますが、この「自分のスレッドに戻ってくる」という動作を、AnyEventのイベントループに預けたコールバックから自スレッドのreadyを呼んで起こしてもらうことで実現しています。 C

    CoroとAnyEventを一緒に使うならunblock_subを覚えておくべき - Pixel Pedals of Tomakomai
  • Coro::Intro和訳 - Logical and Creative i18n

    ちょっと波に乗り遅れた感じもしていますが,Coroの5.2もリリースされたことだし,今まで勉強してきたことの復習も兼ね, Coro::Introを訳してみる. http://search.cpan.org/~mlehmann/Coro-5.2/Coro/Intro.pod 訳やそもそもの理解が間違っていたら是非コメントとかで教えてくださいm(__)m どうでもいいけどマジでインデントがスペース3つだ...w Coroの紹介 これはCoroとCoroのサブモジュールの重要な機能について紹介するチュートリアルです. まず基的なコンセプトを紹介し,その後にそれらの簡単な使い方を紹介します. Coroって何? Coroは初期の段階ではコルーチン*1と呼ばれるファーストクラスの継続の特定の要件を実装したシンプルなモジュールとして作られ始めた. これは基的には,現在の実行ポイントを保ったまま他のポ

    hide-K
    hide-K 2009/10/11
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    hide-K
    hide-K 2009/09/17
  • Coro and AnyEvent as good friend - tokuhirom's blog

    Coro → AnyEventCoro は AnyEvent に依存している(requires 扱い)。 Coro は ファイル/ソケット/etc の 読みこみ/書き込み待ち のときタイマを稼働させるときなどに AnyEvent を内部的につかっている。 ただし、Coro を純粋に co-routine としてつかう場合には Coro::AnyEvent は必要ないです。async { }->join() するだけなら必要ない。 ただ、Coro::* 系のモジュールはたいがいが Coro::AnyEvent つかってるので、co-routine としてつかう場合には AnyEvent がほとんど必須だとおもってまちがいないですます。 AnyEvent → CoroAnyEvent をイベントフレームワークとしてつかうだけならば、Coro をつかう必要はなく、単体で利用可能。単体ならば依存モ

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    hide-K
    hide-K 2009/07/10
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    hide-K
    hide-K 2009/07/10
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • CoroはCoroutineのCoro - PerlでFiber - はこべにっき#

    Ruby勉強会@関西でFiberについて勉強してきた - はこべブログ ♨でPerlでもGeneratorをうまく書けるモジュールがないかなーとこぼしていたところ. perlではCoroでほぼ同じ事ができるが、どちらにしろCoroを使う利点は1個1個をresumeすることじゃなくて 非同期に実装することだと思うのでgenerator云々はちょっと用途が違う気もするです http://b.hatena.ne.jp/lestrrat/20090202#bookmark-11922880 というブコメをいただきました.id:lestrratさんありがとうございます. Coroについて調べてみたところ,Coro::Introによると The natural application for these is to include a scheduler, resulting in cooperati

    CoroはCoroutineのCoro - PerlでFiber - はこべにっき#
    hide-K
    hide-K 2009/06/18
  • 1