From: sinara@... Date: 1997-02-12T15:19:33+09:00 Subject: [ruby-list:2111] Re: Thread, Exception and Timeout 原です。 > まつもと ゆきひろです. > 理由は,thread内部の例外を伝えるべき相手を特定できない(親に > 伝えれば良いというものでもないので)ことです. そうですよね。ときどき fork とごっちゃになってしまって。^^; > こんな感じでどうですか? threadを2つも使っちゃいますけど. とにかく処理の中途で終了可能でなくてはいけないんで、どうしても thread 2 つか、ループを回さないといけないですね。 こんなのもありかな。 def timeout(sec, msg = "timeout") r = nil a = Time.now x = Thread.start { r = yield } while Time.now < a + sec return r unless x.status Thread.pass end if x.status Thread.kill x raise TimeoutError, msg end r end 石塚さんのいうように、Thread#raise があってもうれしいですけど。