Yestereday我读了一些关于Ruby的线程(像这篇文章 ),和我一般的理解是,这(除了像JRuby的几个实现),还有就是所谓的全局解释器锁,正因为如此,一个不能运行就在同一时间多个CPU Ruby代码。 我做了一个小测试(我有AMD炫龙II双核移动处理器M500,以及运行Ubuntu 11.04,+ RVM),看到这个动作,这个代码:
threads = []
CPU = 2
CPU.times do
threads << Thread.new {
x=0
time=Time.new
while 1 do
if Time.new - time >= 30 then
break
else
x=1.00/24000000000.001
end
end
}
end
threads.each { |t| t.join }
puts "done"
并采取截图的系统监视器。
对我来说似乎是稀土和1.9.2使用一个内核在同一时间,但1.9.3似乎同时利用。
这是真的有可能(甚至更多内核?),还是我只是失去了一些东西,并且测试是错误的?