Tenho exatamente o mesmo problema postado aqui há um ano: Loop Ruby falhando no thread
Aqui o código (praticamente o mesmo que no tópico acima)
class NewObject
def my_funk
t = Thread.new {
until false do
puts sleep 15 # sleeps way too much
end
}
t.join
end
end
if __FILE__ == $0
s = NewObject.new()
s.my_funk
end
E aqui está a saída:
15
42
36
38
33
45
42
33
32
40
O código basicamente imprime o número real de segundos inativos. Alguém sabe o que está acontecendo aqui e como corrigi-lo?
Estou executando o Windows 7 e Ruby 1.8.7
Respostas:
0 para resposta № 1Se não me engano, o sono é implementado usandoa chamada do sistema nativo e provavelmente interfere nos threads verde-rubi, gerenciados pela VM. Isso também explicaria por que o JRuby e o 1.9 não sofrem do mesmo problema ....