Ruby/Rubyの基礎知識

イベント駆動I/OライブラリEventMachineの使い方(2ページ目)

イベント駆動I/OライブラリであるEventMachineの使い方を紹介します。

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

EM.defer

EM.deferを使うことで、ブロッキングI/O処理(ファイル読み込み、ネットワーク通信など)をメインスレッドの外で実行させ、結果をコールバック関数で受け取ることができます。

以下に例を示します。

EM.runの中で、deferにより別スレッドで実行されるoperation、およびdefer実行が完了した時にメインスレッドで呼ばれるcallbackというふたつのラムダを定義しています。これを実行すると、

operationラムダの内容のみ別スレッドで実行されているのがわかります。

EM::Deferrable

一方、EM::Deferrableはオブジェクトの状態を監視して、処理が成功したか失敗したかによってインスタンスに予め登録したコールバックを呼び出す機能を持ちます。使い方は以下の例を見てください。

まず状態を監視したいクラスにEM::Deferrableをincludeすることで、いくつかのメソッドが利用可能になります。成功時の処理をcallback、失敗時の処理をerrbackというメソッドに渡したブロックの中で定義しておき、あとは処理結果に応じて成功(succeed)、失敗(fail)のいずれかを呼び出した時点であらかじめ登録しておいた処理が実行されます。

これによって、非同期処理の結果に応じて分岐する処理を可読性高く書くことが出来ます。

以上でEventMachineの簡単な紹介は終わりです。

【編集部おすすめの購入サイト】
楽天市場で Ruby 関連の書籍を見るAmazon で Ruby 関連の書籍を見る
  • 前のページへ
  • 1
  • 2
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます