From: Eric Hodel Date: 2005-09-01T16:08:12+09:00 Subject: Re: Rogue threads found! The plot thickens.... Even better with renewer objects. require 'ts_stream' ts = Rinda::TupleSpace.new 1 stream = Rinda::Stream.new ts, 1 class Renewer attr_accessor :shutdown def initialize() @shutdown = false end def renew() return !@shutdown end end renewer = Renewer.new def read(stream, timeout) puts "READ: #{stream.length} elements" puts "*** #{stream.pop timeout} ***" rescue Rinda::Stream::ClosedError puts "CLOSED: #{stream.length} elements" rescue Rinda::Stream::TimeoutError puts "TIMEOUT: #{stream.length} elements" end 6.times { Thread.start do read stream, renewer end } stream.push "one" puts "#{Thread.list.length} live threads" renewer.shutdown = true sleep 2 puts "#{Thread.list.length} live threads" -- Eric Hodel - drbrain@segment7.net - http://segment7.net FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04