Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library timeout

library timeout

要約

タイムアウトを行うライブラリです。

クラスとモジュール

module Timeout

タイムアウトを行うためのモジュールです。

例外クラス

class TimeoutError

Timeout::Errorの別名です。

class Timeout::Error

timeout で定義される例外クラスです。 関数 timeout がタイムアウトすると発生します。

追加・再定義されるメソッド

Kernel#timeout(sec) {|i| .... } [added by timeout]
Kernel#timeout(sec, exception_class = nil) {|i| .... } [added by timeout]

ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。 exception_class を指定した場合には Timeout::Error の代わりに その例外が発生します。 ブロックパラメータ i は sec がはいります。

また sec が nil のときは制限時間なしで ブロックを実行します。

[PARAM] sec:
タイムアウトする時間を秒数で指定します.
[PARAM] exception_class:
タイムアウトした時、発生させる例外を指定します.

[注意]

timeout による割り込みは Thread によって実現されています。C 言語 レベルで実装され、Ruby のスレッドが割り込めない処理に対して timeout は無力です。 そのような ものは実用レベルでは少ないのですが、例をあげると Socket などは DNSの名前解決に時間がかかった場合割り込めません (resolv-replace を使用する必要があります)。 その処理を Ruby で実装しなおすか C 側で Ruby のスレッドを意識してあげる必要があります。 [[unknown:timeoutの落し穴|trap::timeout]]も参照

Classes

Sublibraries