码迷,mamicode.com
首页 > 编程语言 > 详细

ubuntu14.04下安装rubinius测试原生线程

时间:2015-01-26 17:10:21      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:ruby   mri   cruby   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 = 0
Thread_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.join
t1.join

puts "$x last is #{$x}"

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

MRI:

wisy@wisy-ThinkPad-X61:~/src/ruby_src$ ruby a.rb
$x last is 20000
wisy@wisy-ThinkPad-X61:~/src/ruby_src$ ruby a.rb
$x last is 20000
wisy@wisy-ThinkPad-X61:~/src/ruby_src$ ruby a.rb
$x last is 20000
wisy@wisy-ThinkPad-X61:~/src/ruby_src$ ruby a.rb
$x last is 20000
wisy@wisy-ThinkPad-X61:~/src/ruby_src$ ruby a.rb
$x last is 20000

rbx:

wisy@wisy-ThinkPad-X61:~/src/ruby_src$ rbx a.rb
$x last is 17234
wisy@wisy-ThinkPad-X61:~/src/ruby_src$ rbx a.rb
$x last is 17845
wisy@wisy-ThinkPad-X61:~/src/ruby_src$ rbx a.rb
$x last is 11626
wisy@wisy-ThinkPad-X61:~/src/ruby_src$ rbx a.rb
$x last is 14554
wisy@wisy-ThinkPad-X61:~/src/ruby_src$ rbx a.rb
$x last is 16098

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

ubuntu14.04下安装rubinius测试原生线程

标签:ruby   mri   cruby   rubinius   多线程   

原文地址:http://blog.csdn.net/mydo/article/details/43153767

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!