Skip to content

matsumotory/mruby-timer-thread

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

mruby-timer-thread Build Status

Simple Timer Thread class

install by mrbgems

  • add conf.gem line to build_config.rb
MRuby::Build.new do |conf|

    # ... (snip) ...

    conf.gem :github => 'matsumotory/mruby-timer-thread'
end

example

  • non blocking timer
timer_msec = 5000

# 5sec timer
timer = Timer::MRubyThread.new
timer.run timer_msec

while timer.running? do
  sleep 1
  puts "master thread sleeping loop"
end

puts "timer thread finish."
  • blocking timer
timer = Timer::MRubyThread.new


timer.run 3000

puts "main thread sleeping..."

sleep 1

puts "waiting timer"

timer.blocking_handler do
  puts "finish timer"
end

puts "finish main thread"
  • POSIX timer
    • NOTE: POSIX timer not available on MacOS
# Specify signal name if you want (default ot SIGALRM as timer_create's default)
# signal: nil will send no signal.
# you can add handlers with mruby-signal or mruby-signal-thread
timer = Timer::POSIX.new(signal: nil)
timer.run 5000

# You can create multiple timers (and are thread-safe by kernel)
sleep 1
timer2 = Timer::POSIX.new(signal: nil)
timer2.run 5000

while timer.running? or timer2.running? do
  sleep 1
  puts "Timer1 running: #{timer.running?} and Timer2 running: #{timer2.running?}"
end
# ...
  • POSIX timer with interval
# recommended mruby-signal-thread
SignalThread.trap :USR2 do
  puts "Current datetime: #{`date`.chomp}"
end

timer = Timer::POSIX.new(signal: :USR2)

# Invoke first timer after 5,000 msec,
# then start interval timer every after 3,000 msec
# like uv_timet_t or timer_create API
timer.run 5000, 3000

Current datetime: Mon Mar 27 07:25:31 UTC 2017
Current datetime: Mon Mar 27 07:25:34 UTC 2017
Current datetime: Mon Mar 27 07:25:37 UTC 2017
Current datetime: Mon Mar 27 07:25:40 UTC 2017
Current datetime: Mon Mar 27 07:25:43 UTC 2017
...

License

under the MIT License:

  • see LICENSE file

About

Simple Timer Thread

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published