タグ

非同期に関するakaneharaのブックマーク (5)

  • Node.jsと非同期I/Oと混乱した私 - shutdown -r now

    最近、Node.jsに興味があります。Node.jsを調べていると、I/O関係で、非同期I/O、ノンブロッキング、コールバック等、いろいろとキーワードがでてきて混乱してきます。 そこで、ブログに書いて整理しよう思います。間違いがあれば是非、指摘してください。 言葉の定義 ◇非同期呼び出し(Asynchronous Call)と同期呼び出し(Synchronous Call)の違い 同期呼び出し(Synchronous Call) 通常メソッドを呼び出すとメソッド内の処理が完了するまで、呼び出し元には戻ってこない。このようなメソッド呼び出しのこと。 非同期呼び出し(Asynchronous Call) メソッドを呼び出した瞬間に呼び出し元に処理が戻ってくるような呼び出しのこと。非同期で呼び出されたメソッドは、環境によって処理されるタイミングが変わる。 ◇マルチスレッド(multithread

    Node.jsと非同期I/Oと混乱した私 - shutdown -r now
  • Coroを使って並行処理 - JPerl Advent Calendar 2009

    こんにちわ。『層・圏・トポス』読者の会からの刺客、id:hirataraです。 「並行処理」って言葉はなんだか魅力的ですよね! そこで、今日はCoroを使った並行処理を紹介します。なお、Coroはコアモジュールではありませんので、使ってみたい場合にはCPANからインストールして下さい。 スレッドを作る Coroでは、asyncによって新しいスレッドを作ることができます。ただし、asyncでスレッドを作っても、何もしなければ他のスレッドに勝手に処理が移ることはありません。asyncで作成した別のスレッドに制御を移すには、明示的な操作が必要となります。ここではcedeを使って、asyncブロックへ処理を移しましょう。 use strict; use warnings; use Coro; async { print "Another thread\n"; }; print "main thre

  • Coro::AnyEventでフロントエンドをコールバックを使わずに書く - Pixel Pedals of Tomakomai

    Coro::AnyEventを使うと、継続渡しスタイルを使わずに非同期を書くことができます*1。 ということで、試しにやってみました。 最初にまとめ AnyEventの層を作り、その上にCoroの層を重ねて、フロントエンドからはCoroの層だけ使うとわかりやすいアプリができるんじゃないかなあと思います。 (0) AnyEventのAPIを作る まず、AnyEventでフロントエンドのための材料を作ります。頑張ってコールバックを使って非同期処理を書いて下さい。名前空間はAnyEvent::的な何かにするといいと思います。また、たぶんこの段階ではまだCoro::AnyEventは使わない方が無難です。ピュアAnyEventの方が使い回しが効きますし。 ここでは、AnyEvent::HTTPを題材にします。バックエンドとしてすでにAnyEvent::HTTPは使えるものとします。 (1) Cor

    Coro::AnyEventでフロントエンドをコールバックを使わずに書く - Pixel Pedals of Tomakomai
  • Coro の Perldoc 読んでみた - 理系学生日記

    空前の非同期ブームが襲来した 2009 年でしたけれども、ぼくは Coro をほぼスルー、後で勉強しよう後で勉強しようとか思って結局勉強しなかったクソでした。このままではマズい。死ぬ。そういうわけで、新幹線の中でちょっと Perldoc 読んでた。 何がよくわかってなかったかってその筆頭にあったのが AnyEvent と Coro の関係であって、え、なんなの、どういうことなの、って感じていたのだけども、要するに Coro が適切なタイミングで AnyEvent のイベントループを回してくれて嬉しいね、ということじゃねーかという理解をした。 Coro を使って async を呼ぶと、Coroutine が生成されて Ready Queue に入る。Coro で生成されるのは協調スレッドであるから、明示的に CPU 資源を譲渡しない限り、協調スレッド側に制御が移らない。制御を移す役割を果たす

    Coro の Perldoc 読んでみた - 理系学生日記
  • AnyEvent::ForkManager - A simple parallel processing fork manager with AnyEvent - metacpan.org

  • 1