[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

tipsとasynchronousに関するa2ikmのブックマーク (3)

  • Ruby(Linux): パイプとプロセスの fork/exec を使い外部コマンドと入出力をやりとりする | anobota

    RubyLinux): パイプとプロセスの fork/exec を使い外部コマンドと入出力をやりとりする ※検索で携帯用のページに辿りついてしまった方はこちらのPC用のページをどうぞ Rubyで外部コマンドと入出力のやりとりを行いたい、という需要は そこそこあると思うのですが、パイプやプロセスについて知っていないと ちんぷんかんぷんなので、サンプルと図を作ってみました。 自分もよく分からない状態から始めたので 間違いなどあるかもしれません。 スレッドについては割愛。 ソースだけ見ていてもイメージしにくいので 適当に図を描いてあーでもないこーでもないとやってみると だんだん分かってきます。 外部コマンドの例として mplayer を使いました。 mplayer は -slave オプションを付けていると 標準入力からのコマンドを受け取って動作するので、それを利用して 「4秒再生、4秒一時停

  • Thread#valueでFutureパターン - うなの日記

    Futureパターンは、時間のかかる処理の非同期実行と処理完了の待ち合わせをスマートに行うためのパターンです。 非同期スレッドの開始や待ち合わせ処理を、非同期実行を開始する関数と引換券に隠蔽し、 呼び出し側や時間のかかる処理でスレッドを意識する必要なしに、処理を非同期実行できるようにします。 RubyではThread#valueを使うとさくっと作れます。 # 処理の実行結果を得るための引換券 class Future def initialize( t ) @t = t end # 処理の実行結果を得る。 # - 処理が実行完了していなければ実行完了を待ち、結果を返す。 # - 実行完了していれば、即座に結果を返す。 # - 処理の途中で例外となっていれば、例外をスロー def get_result @t.value end end # 指定したブロックを非同期実行し、 # 結果を取得する

    Thread#valueでFutureパターン - うなの日記
  • rubyで外部コマンド実行

    rubyからOSのコマンドやシェルなどの、外部コマンドを 実行する方法としていくつかあるようですので簡単にご紹介します。 続きはこちら http://doruby.kbmj.com/yablog/20090531/ruby_1

  • 1