# 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

timeout(sec, exception=Error) {|if sec == nil or sec.zero?| ...}

[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]