ユーザ用ツール

サイト用ツール


alworker:タイマー
no way to compare when less than two revisions

差分

このページの2つのバージョン間の差分を表示します。


次のリビジョン
alworker:タイマー [2013/06/02 17:40] – 外部編集 127.0.0.1
行 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 · 最終更新: 2021/10/01 11:50 by hirohito