Ruby에 스레드가 있습니다. 그것은 루프를 실행합니다. 그 루프가 sleep (n)에 도달하면 멈추고 깨어나지 않습니다. sleep (n)을 사용하여 루프를 실행하면 무한 루프로 실행됩니다.Ruby 루프 스레드 실패
예상대로 스레드가 실행되지 않도록 코드에서 어떤 일이 발생합니까? 어떻게 수정합니까?
class NewObject
def initialize
@a_local_var = 'somaText'
end
def my_funk(a_word)
t = Thread.new(a_word) do |args|
until false do
puts a_word
puts @a_local_var
sleep 5 #This invokes the Fail
end
end
end
end
if __FILE__ == $0
s = NewObject.new()
s.my_funk('theWord')
d = gets
end
내 플랫폼은 윈도우 XP SP3
내가 설치 한 루비의 버전 당신은 가입이 누락 1.8.6
위 코드는 "theWord"와 "somaText"를 5 초마다 인쇄합니다. 그게 당신이 기대하는 것입니까? 문제가있는 Ruby의 특정 버전은 무엇입니까? – molf
이 코드를 ruby 1.8.6, 1.9.1 및 jruby 1.3.1과 함께 사용하여 예상대로 작동합니다. Thread.abort_on_exception = true를 추가하여 오류가 무엇인지 확인하십시오. – ottobar