A question with

hi
when im running a code like this

 a = 0
  Thread.start{
  while true
    puts "#{a+=1}"
  end
  }

This will be terminated automatically but wont keep on looping as
expected.
And by my test, the running result will always terminated while a =
41.means
after putting “41” it stops.

Im doing this in windows vista. I dont know if its OS related issue or
not.
or maybe im doing wrong ? anyone can tell me?

Im still wrote:

hi
when im running a code like this

 a = 0
  Thread.start{
  while true
    puts "#{a+=1}"
  end
  }

This will be terminated automatically but wont keep on looping as
expected.

When a Ruby program terminates, all threads are killed, regardless of
their states. (pickaxe2 p. 137)

And by my test, the running result will always terminated while a =
41.means
after putting “41” it stops.

It seems strange to me that the thread would get killed at the same
point every time.

Im doing this in windows vista. I dont know if its OS related issue or
not.
or maybe im doing wrong ? anyone can tell me?

…you can wait for a particular thread to finish by calling that
thread’s Thread#join method. The calling thread [e.g. your main
program] will block until the given thread is finished…If you don’t
want to block forever, you can give join a timeout parameter…
(pickaxe2 p. 137)

My guess is that since you’re not joining the thread to the main
thread, it just terminates after the main thread exits. Try this:

a = 0
thread = Thread.new do
while true
puts “#{a+=1}”
end
end
thread.join

Alex

thanks Alex. I solved it that way. :smiley:

2009/8/19 Alex [email protected]