class MGit::DurationRecorder
计时器
Constants
- DEFAULT_DURATION_KEY
Public Class Methods
end(duration_key:DEFAULT_DURATION_KEY, use_lock:false)
click to toggle source
# File lib/m-git/foundation/duration_recorder.rb, line 60 def self.end(duration_key:DEFAULT_DURATION_KEY, use_lock:false) mutex_exec(use_lock) { if @@status[duration_key] != IDLE current = Time.new.to_f @@duration[duration_key] += (current - @@time_stamp[duration_key]) @@time_stamp.delete(duration_key) @@status[duration_key] = IDLE return @@duration[duration_key] else puts '没有需要停止的计时' end } end
pause(duration_key:DEFAULT_DURATION_KEY, use_lock:false)
click to toggle source
# File lib/m-git/foundation/duration_recorder.rb, line 40 def self.pause(duration_key:DEFAULT_DURATION_KEY, use_lock:false) mutex_exec(use_lock) { if @@status[duration_key] == RUNNING current = Time.new.to_f @@duration[duration_key] += (current - @@time_stamp[duration_key]) @@time_stamp.delete(duration_key) @@status[duration_key] = PAUSE end } end
resume(duration_key:DEFAULT_DURATION_KEY, use_lock:false)
click to toggle source
# File lib/m-git/foundation/duration_recorder.rb, line 51 def self.resume(duration_key:DEFAULT_DURATION_KEY, use_lock:false) mutex_exec(use_lock) { if @@status[duration_key] == PAUSE @@time_stamp[duration_key] = Time.new.to_f @@status[duration_key] = RUNNING end } end
start(duration_key:DEFAULT_DURATION_KEY, use_lock:false)
click to toggle source
# File lib/m-git/foundation/duration_recorder.rb, line 27 def self.start(duration_key:DEFAULT_DURATION_KEY, use_lock:false) mutex_exec(use_lock) { status = IDLE if @@status[duration_key].nil? if status == IDLE @@duration[duration_key] = 0.0 @@time_stamp[duration_key] = Time.new.to_f @@status[duration_key] = RUNNING else puts '需要停止计时后重新开始计时' end } end
Private Class Methods
mutex_exec(use_lock) { || ... }
click to toggle source
多线程执行保护
@param use_lock [Boolean] 执行是否加锁
# File lib/m-git/foundation/duration_recorder.rb, line 80 def self.mutex_exec(use_lock) if use_lock @@lock.lock yield if block_given? @@lock.unlock else yield if block_given? end end