Jen*_*nny 0 ruby multithreading
所以,我为自己编写了一个快速线程示例,使用ruby docs作为线程:
puts "Hello World"
test = Thread.new do
while true
puts Time.now
end
end
puts "Goodbye World"
Run Code Online (Sandbox Code Playgroud)
我会期望这段代码永远运行,打印"Hello World",几个时间戳,再见世界,然后是一大堆时间戳,直到我手动破解代码.
相反,我得到的是:
Hello World
Fri Aug 06 09:08:27 -0400 2010
Fri Aug 06 09:08:27 -0400 2010
Fri Aug 06 09:08:27 -0400 2010
Fri Aug 06 09:08:27 -0400 2010
Fri Aug 06 09:08:27 -0400 2010
Fri Aug 06 09:08:27 -0400 2010
Fri Aug 06 09:08:27 -0400 2010
Fri Aug 06 09:08:27 -0400 2010
Fri Aug 06 09:08:27 -0400 2010
Goodbye World
Run Code Online (Sandbox Code Playgroud)
然后程序终止.我真的很困惑.一旦下一行代码启动,线程就会终止吗?他们超时吗?我试过添加
sleep 1
Run Code Online (Sandbox Code Playgroud)
在puts语句之前和之后......但这只是意味着线程打印的时间戳更少(如果睡眠在puts之前,它什么都不打印,只打招呼,再见,如果之后,它会在退出之前打印一个时间戳) .
我没有最多的线程经验...但这对我来说似乎真的不直观......我做错了什么?错误使用线程?我做得对,但我对这些线程/做什么感到困惑?
puts "Hello World"
test = Thread.new do
while true
puts Time.now
end
end
puts "Goodbye World"
test.join
Run Code Online (Sandbox Code Playgroud)
在Thread类的实例上调用.join方法将使程序停止并等待该线程完成.