Вы не говорите, какую версию Ruby вы используете.Кроме того, ваш пример кода не демонстрирует ваше использование gets
, что важно, если у вас возникли проблемы с ним.Также не показан пример того, как вы пытаетесь зацикливаться в фоновом режиме, пока он ждет пользователя.
Исходя из вашего заголовка и использования Time, это минимальный код, который я мог бы себе представитьначал бы тестировать проблему:
time = Time.now
asdf = STDIN.gets
p Time.now - time
В Ruby 1.8.7:
test.rb(main):004:0> greg-mbp-wireless:Desktop greg$ rvm 1.8.7; rvm list
rvm rubies
=> ruby-1.8.7-p302 [ x86_64 ]
ruby-1.9.2-head [ x86_64 ]
ruby-1.9.2-p0 [ x86_64 ]
greg-mbp-wireless:Desktop greg$ irb -f test.rb
test.rb(main):001:0> time = Time.now
=> Sun Nov 21 13:24:58 -0700 2010
test.rb(main):002:0> asdf = STDIN.gets
=> "\n"
test.rb(main):003:0> p Time.now - time
3.802123
=> nil
В Ruby 1.9.2:
test.rb(main):004:0> greg-mbp-wireless:Desktop greg$ rvm 1.9.2; rvm list
rvm rubies
ruby-1.8.7-p302 [ x86_64 ]
ruby-1.9.2-head [ x86_64 ]
=> ruby-1.9.2-p0 [ x86_64 ]
greg-mbp-wireless:Desktop greg$ irb -f test.rb
test.rb(main):001:0> time = Time.now
=> 2010-11-21 13:25:37 -0700
test.rb(main):002:0> asdf = STDIN.gets
=> "\n"
test.rb(main):003:0> p Time.now - time
3.578869
=> 3.578869
В каждом тесте ясделал паузу в паре секунд, что отражено в вычислениях времени.
Помимо p
, возвращающего значение в 1.9.2 и nil
в 1.8.7, я не вижу никакой реальной разницы.Покажите пример того, как вы выполняете циклы в фоновом режиме для выполнения своих вычислений, и я могу расширить тестовый код.