Ubuntu 14.04下安装Rubinius测试原生线程

因为CRuby(MRI)本身不支持原生多线程,所以想试一下其他ruby解释器实现对原生多线程的支持.于是安装rubinius折腾一下:)

在rubinius官网下载2.4.1源代码,然后驾轻就熟首先bundle,然后./configure一切正常,在rake最后关头出现错误,提示rubinius内部文件夹中若干文件找不到;奇怪的是再次执行rake后,还是报错,但是文件夹中出现了上次未找到的文件,进去看了一下貌似内容不太对,只有Gemfile和一些README之类的文件,并没有源代码之类的文件.多次执行rake,发现文件夹中文件越来越多,但rake总是不成功.

开始怀疑是源代码过旧,于是从github中clone最新版本2.5.x,下载失败几次后终于成功鸟,一百多兆,解压缩后大了一倍多;然后按部就班,发现在执行./configure时下载了很多gem,于是抱有希望鸟…可是rake时还是报错,错误相同.照理不应该啊!不可能再是源代码的问题,多半是笨猫系统的问题!

静下心来,错误最后的一些细节引起了本猫的注意:隐约一些utf8转换神马ascii8失败之类的词眼云云飘来…忽然联想到:难道是PATH中有中文的原因吗?果不其然,fk!换为全english的path后一切清净了;编译时间不短也不长,最后还有若干UnitTest需要运行测试…剩下的就简单鸟:rake install,再错,加权限后ok!

下面上测试代码:

#!/usr/bin/ruby

$x = 0Thread_proc = ->{i=0;($x+=1;i+=1) while(i<10000)}

def make_t(blk)Thread.new(&blk) end

t0 = make_t(Thread_proc)t1 = make_t(Thread_proc)

t0.joint1.join

puts “$x last is #{$x}”

在MRI和rbx分别5次结果如下:

MRI:

linuxidc@linuxidc:~/src/ruby_src$ ruby a.rb$x last is 20000linuxidc@linuxidc:~/src/ruby_src$ ruby a.rb$x last is 20000linuxidc@linuxidc:~/src/ruby_src$ ruby a.rb$x last is 20000linuxidc@linuxidc:~/src/ruby_src$ ruby a.rb$x last is 20000linuxidc@linuxidc:~/src/ruby_src$ ruby a.rb$x last is 20000

rbx:

linuxidc@linuxidc:~/src/ruby_src$ rbx a.rb$x last is 17234linuxidc@linuxidc:~/src/ruby_src$ rbx a.rb$x last is 17845linuxidc@linuxidc:~/src/ruby_src$ rbx a.rb$x last is 11626linuxidc@linuxidc:~/src/ruby_src$ rbx a.rb$x last is 14554linuxidc@linuxidc:~/src/ruby_src$ rbx a.rb$x last is 16098

结论很简单,印证了本篇的主题。

本文永久更新链接地址:

,一个人最大的破产是绝望,最大的资产是希望。

Ubuntu 14.04下安装Rubinius测试原生线程

相关文章:

你感兴趣的文章:

标签云: