Why this simple program give no output, and terminates immidiatly
after its launched? There should be thread running and giving lots of
'lala', am I right?
class Bar
def initialize
end
def foo
Thread.new do
while true
puts "lala\n"
end
end
end
end
Why this simple program give no output, and terminates immidiatly
after its launched? There should be thread running and giving lots of
'lala', am I right?
class Bar
def initialize
end
def foo
Thread.new do
try changing this to a = Thread.new
while true
puts "lala\n"
end
end
then add an a.join here
end
end
b=Bar.new
b.foo
Someone else would have to explain why that happens. Don't know enough about threads (let alone ruby's) to explain that.
When you create a thread, the main threads continues. In you case the main
thread terminates after calling "Thread.new" so the program exists.
If you want to *wait* all the created threads to finish their work, then you
must "join" them:
my_thread = Thread.new do .... end
do other stuff in main thread
my_thread.join
···
El Martes, 20 de Octubre de 2009, pawel escribió:
Why this simple program give no output, and terminates immidiatly
after its launched? There should be thread running and giving lots of
'lala', am I right?
class Bar
def initialize
end
def foo
Thread.new do
while true
puts "lala\n"
end
end
end
end
Why this simple program give no output, and terminates immidiatly
after its launched? There should be thread running and giving lots of
'lala', am I right?
class Bar
def initialize
end
def foo
Thread.new do
while true
puts "lala\n"
end
end
end
end
b=Bar.new
b.foo
Hi Pawel, here is one example, see if you can follow it.
class Bar
def initialize( msg ) @msg = msg
end
def foo
t_exit = Time.now.to_i + 3
while true
puts @msg
break if Time.now.to_i > t_exit
sleep 0.5
end
end
end
All threads other than main are demon threads in Ruby, i.e. as has been explained they do not keep the process alive.
Kind regards
robert
···
On 20.10.2009 00:34, Patrick Okui wrote:
On 20 Oct, 2009, at 1:05 AM, pawel wrote:
Why this simple program give no output, and terminates immidiatly
after its launched? There should be thread running and giving lots of
'lala', am I right?
class Bar
def initialize
end
def foo
Thread.new do
try changing this to a = Thread.new
while true
puts "lala\n"
end
end
then add an a.join here
end
end
b=Bar.new
b.foo
Someone else would have to explain why that happens. Don't know enough about threads (let alone ruby's) to explain that.