| Module | TimeoutEx |
| In: |
lib/timeout_ex.rb
|
# File lib/timeout_ex.rb, line 17 def timeout(sec, exception=Error, mutex=nil, &block) if sec > 0 thread = Thread.new(mutex) do |mutex| Thread.current[:timeout_mutex] = mutex block[] end sleep(sec) if thread.alive? unless mutex.nil? mutex.synchronize { thread.kill if thread.alive? } else thread.kill end raise(exception, 'execution expired') end else block[] end true end