====== AlWoker タイマー ======
require "al_wotker_timer"
----
タイマーイベントを発生させます。\\
以下の3つの機能をもちます。\\
* 一定時間ごと(例:0.5秒ごと)に処理を行う、繰り返しタイマー。
* 指定した秒数が経過後に処理を行う、シングルショットタイマー。
* 指定した時刻に処理を行う、シングルショットタイマー。
====== サンプル ======
===== 繰り返しタイマー =====
# 繰り返しタイマー
# 一秒ごとに、時刻を表示する。
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
Timer.periodic の第2引数で、最初の起動までの秒数を指定できます。
@timer = Timer.periodic( 60, 5 ) # 5秒後に起動し、その後60秒ごとに起動する
===== シングルショットタイマー =====
# シングルショットタイマー
# 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
# シングルショットタイマー
# 次の正時に時刻を表示して終了する。
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
====== 同期・非同期 ======
イベントハンドラは、デフォルトで同期的に呼び出されます。非同期にしたい場合は、mode_sync アトリビュートを変更します。
@timer.mode_sync = :async # 非同期
@timer.mode_sync = :sync # 同期(デフォルト)
====== 停止 ======
タイマーは、任意のタイミングで停止できます。
@timer.stop()