/ / Ruby Sleep in a loop in Thread - рубинен, многопоточен, контур, сън

Ruby Sleep в една линия в Thread - рубин, мултитъкан, цикли, сън

Имам точно същия проблем, публикуван тук преди година: Неуспешна Ruby Loop в нишката

Тук кодът (почти същият като в темата по-горе)

 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

И ето изхода:

15
42
36
38
33
45
42
33
32
40

Основно кодът отпечатва действителния брой спани секунди. Някой знае ли какво се случва тук и как да го поправя?

Работя с Windows 7 и Ruby 1.8.7

Отговори:

0 за отговор № 1

Ако не греша, сънът се осъществява чрезнативната система се обажда и вероятно пречи на рубинено зелените нишки, които се управляват от VM. Това би обяснило и защо JRuby и 1.9 не страдат от същия проблем ....