タグ

coroに関するfaultierのブックマーク (3)

  • おさかなラボ - Coroの並列をあっさり理解するための3つのサンプルスクリプト

    Coroが非同期にルーチンを扱う(コルーチンを扱う)モジュールだということはご存知だと思うが、いまいちピンと来ていない人も多いのではないだろうか。これは、1つにCoroやCoro::Introの例題が悪すぎると思う。例えば、Coro::Introのサンプルスクリプトはこうだ。 use Coro; async { print "async 1\n"; cede; print "async 2\n"; }; print "main 1\n"; cede; print "main 2\n"; cede; このスクリプトは確かに面白い挙動をするが、スレッドを実現してるんだよと言われるとちょっと「?」である。こんなのgoto文でできるじゃんみたいな。そしていきなりセマフォやチャネルの話に飛んでしまい、肝心の「Coroはスレッドが実現できるんだよ」というところが分かりにくい。そこ

  • Coro とは結局なんだったのか - tokuhirom's blog

    Coro は first class の co-routine を実装しようとおもって開発してたら、「あれ、これ co-operative thread にできるのでは?」とおもいはじめたわけなのであり、そうしてみたということなのであった。 Coro は co-operative thread なわけであるが、以下のようにすると、時間ごとにスレッドをスイッチできるわけなのであり。一定時間ごとに cede; してるということなのである。CPU インテンシブな処理の最中で cede 書くのが面倒な場合にはこれが有用なのだろうとおもうのである(see Coro.pm)。 # "timeslice" the given block sub timeslice(&) { use Time::HiRes (); Coro::on_enter { # on entering the thread, we

  • 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 をつかう必要はなく、単体で利用可能。単体ならば依存モ

  • 1