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?
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
···
On Wed, Aug 19, 2009 at 9:51 AM, Im still<quietstill@gmail.com> 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.
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?
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
On Wed, Aug 19, 2009 at 9:51 AM, Im still<quietstill@gmail.com> 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.
> 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?
>