mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* document updates - [ruby-core:04296], [ruby-core:04301],
[ruby-core:04302], [ruby-core:04307] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@7813 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
83b531e3ea
commit
2ef0c6a109
6 changed files with 204 additions and 46 deletions
|
@ -1,38 +1,39 @@
|
|||
# = timeout.rb
|
||||
#
|
||||
# timeout.rb -- execution timeout
|
||||
# execution timeout
|
||||
#
|
||||
# Copyright (C) 2000 Network Applied Communication Laboratory, Inc.
|
||||
# Copyright (C) 2000 Information-technology Promotion Agency, Japan
|
||||
#
|
||||
#= SYNOPSIS
|
||||
# = Synopsis
|
||||
#
|
||||
# require 'timeout'
|
||||
# status = timeout(5) {
|
||||
# # something may take time
|
||||
# status = Timeout::timeout(5) {
|
||||
# # Something that should be interrupted if it takes too much time...
|
||||
# }
|
||||
#
|
||||
#= DESCRIPTION
|
||||
# = 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.
|
||||
# A way of performing a potentially long-running operation in a thread, and terminating
|
||||
# it's execution if it hasn't finished by a fixed amount of time.
|
||||
#
|
||||
#== Parameters
|
||||
# Previous versions of timeout didn't provide use a module for namespace. This version
|
||||
# provides both Timeout.timeout, and a backwards-compatible #timeout.
|
||||
#
|
||||
# : timout
|
||||
# = Copyright
|
||||
#
|
||||
# The time in seconds to wait for block termination.
|
||||
#
|
||||
# : [exception]
|
||||
#
|
||||
# The exception class to be raised on timeout.
|
||||
#
|
||||
#=end
|
||||
# Copyright:: (C) 2000 Network Applied Communication Laboratory, Inc.
|
||||
# Copyright:: (C) 2000 Information-technology Promotion Agency, Japan
|
||||
|
||||
module Timeout
|
||||
# Raised by Timeout#timeout when the block times out.
|
||||
class Error<Interrupt
|
||||
end
|
||||
|
||||
# Executes the method's block. If the block execution terminates before +sec+
|
||||
# seconds has passed, it returns true. If not, it terminates the execution
|
||||
# and raises +exception+ (which defaults to Timeout::Error).
|
||||
#
|
||||
# Note that this is both a method of module Timeout, so you can 'include Timeout'
|
||||
# into your classes so they have a #timeout method, as well as a module method,
|
||||
# so you can call it directly as Timeout.timeout().
|
||||
def timeout(sec, exception=Error)
|
||||
return yield if sec == nil or sec.zero?
|
||||
begin
|
||||
|
@ -47,13 +48,22 @@ module Timeout
|
|||
y.kill if y and y.alive?
|
||||
end
|
||||
end
|
||||
|
||||
module_function :timeout
|
||||
end
|
||||
|
||||
# compatible
|
||||
# Identical to:
|
||||
#
|
||||
# Timeout::timeout(n, e, &block).
|
||||
#
|
||||
# Defined for backwards compatibility with earlier versions of timeout.rb, see
|
||||
# Timeout#timeout.
|
||||
def timeout(n, e=Timeout::Error, &block)
|
||||
Timeout::timeout(n, e, &block)
|
||||
end
|
||||
|
||||
# Another name for Timeout::Error, defined for backwards compatibility with
|
||||
# earlier versions of timeout.rb.
|
||||
TimeoutError = Timeout::Error
|
||||
|
||||
if __FILE__ == $0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue