Timeout (Module)

In: timeout.rb
 timeout.rb -- execution timeout

 Copyright (C) 2000  Network Applied Communication Laboratory, Inc.
 Copyright (C) 2000  Information-technology Promotion Agency, Japan

SYNOPSIS

   require 'timeout'
   status = timeout(5) {
     # something may take time
   }

DESCRIPTION

 timeout executes the block.  If the block execution terminates successfully
 before timeout, it returns true.  If not, it terminates the execution and
 raise TimeoutError exception.

Parameters

  : timout

    The time in seconds to wait for block teminatation.

  : [exception]

    The exception classs to be raised on timeout.

end

Methods

timeout  

Classes and Modules

Class Timeout::Error

Public Instance methods

[Source]

# File timeout.rb, line 36
  def timeout(sec, exception=Error)
    return yield if sec == nil or sec.zero?
    begin
      x = Thread.current
      y = Thread.start {
        sleep sec
        x.raise exception, "execution expired" if x.alive?
      }
      yield sec
      #    return true

    ensure
      y.kill if y and y.alive?
    end
  end

[Validate]