Bill Kelly wrote:
> From: "Eric Hodel" <drbrain / segment7.net>
>>
>> On Mar 28, 2006, at 9:48 AM, Shea Martin wrote:
>>
>>> I want to listen for connections for 2 seconds, then timeout.  Do I 
>>> have  to use the Timeout module?
>>
>> That will be the easiest way.
>>
>> Timeout.timeout 2 do
>>   Thread.start server.accept do |s| new_connection s end
>> end
> 
> Oh, hey, cool.  Using the thread there looks like it
> ought to avoid the issue with Timeout firing in the
> middle of ensure blocks and circumventing them?
> 
> I've been avoiding Timeout like "the plague" since
> running into that behavior.

But the timeout won't stop the thread.

$ cat timeout.rb
require 'timeout'

th = nil
begin
  Timeout.timeout 2 do
    th = Thread.new do
      loop {puts "in thread"; sleep 1}
    end
  end
rescue TimeoutError
  puts "timeout!"
end

sleep 5
p th.alive?

$ ruby timeout.rb
in thread
in thread
in thread
in thread
in thread
true

-- 
      vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407