ユーザ用ツール

サイト用ツール


alworker:タイマー

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

alworker:タイマー [2013/06/02 17:40] (現在)
ライン 1: ライン 1:
 +====== AlWoker タイマー ======
 +
 +require "​al_wotker_timer"​
 +----
 +タイマーイベントを発生させます。\\
 +以下の3つの機能をもちます。\\
 +
 +  * 一定時間ごと(例:1秒ごと)に処理を行う、繰り返しタイマー。
 +  * 指定した秒数が経過後に処理を行う、シングルショットタイマー。
 +  * 指定した時刻に処理を行う、シングルショットタイマー。
 +
 +====== サンプル ======
 +
 +<file ruby timer_periodic.rb>​
 +# 繰り返しタイマー
 +#  一秒ごとに、時刻を表示する。
 +require "​al_worker_timer"​
 +
 +class Worker1 < AlWorker
 +  def initialize2()
 +    @timer = Timer.periodic( 1 )        # every 1 sec.
 +    @timer.run() {
 +      puts Time.now
 +    }
 +  end
 +end
 +
 +Worker1.new.run
 +</​file>​
 +
 +
 +<file ruby timer_singleshot1.rb>​
 +# シングルショットタイマー
 +# 5秒後に時刻を表示して終了する。
 +require "​al_worker_timer"​
 +
 +class Worker1 < AlWorker
 +  def initialize2()
 +    @timer = Timer.singleshot( 5 )      # 5 sec later.
 +    @timer.run() {
 +      puts Time.now
 +      exit
 +    }
 +  end
 +end
 +
 +Worker1.new.run
 +</​file>​
 +
 +
 +<file ruby timer_singleshot2.rb>​
 +# シングルショットタイマー
 +# 次の正時に時刻を表示して終了する。
 +require "​al_worker_timer"​
 +
 +class Worker1 < AlWorker
 +  def initialize2()
 +    t = Time.now
 +    @timer = Timer.singleshot( Time.mktime( t.year, t.mon, t.day, t.hour+1 ) )
 +    @timer.run() {
 +      puts Time.now
 +      exit
 +    }
 +  end
 +end
 +
 +Worker1.new.run
 +</​file>​
 +
 +====== 同期・非同期 ======
 +
 +イベントハンドラは、デフォルトで同期的に呼び出されます。非同期にしたい場合は、mode_sync アトリビュートを変更します。
 +
 +<code ruby>
 +    @timer.mode_sync = :​async ​   # 非同期
 +    @timer.mode_sync = :sync     # 同期(デフォルト)
 +</​code>​
 +
 +
 +====== 停止 ======
 +
 +タイマーは、任意のタイミングで停止できます。
 +
 +<code ruby>
 +    @timer.stop()
 +</​code>​
  
alworker/タイマー.txt · 最終更新: 2013/06/02 17:40 by hirohito