Итак, я написал для себя быстрый пример потока, используя документы ruby для потока:
puts "Hello World"
test = Thread.new do
while true
puts Time.now
end
end
puts "Goodbye World"
Я бы ОЖИДАЛ, что этот код будет выполняться вечно, напечатав «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
И тогда программа завершается.Я ДЕЙСТВИТЕЛЬНО смущен здесь.Завершаются ли потоки, как только начнется следующая строка кода?Они тайм-аут?Я попытался добавить
sleep 1
до и после оператора put ... но это просто означает, что поток печатает меньше меток времени (если сон перед запуском, он ничего не печатает, просто привет идо свидания, если после этого он печатает ровно одну временную отметку перед выходом).
У меня нет многопоточности ... но мне это кажется не совсем понятным ... Я что-то не так делаю?Использование потоков неправильно?Я делаю это правильно, но не понимаю, какие темы есть / делают?