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]]も参照