因为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测试原生线程的更多相关文章

  1. Ubuntu14.04下安装Hadoop2.5.1 (单机模式)

    本文地址:http://www.cnblogs.com/archimedes/p/hadoop-standalone-mode.html,转载请注明源地址. 欢迎关注我的个人博客:www.wuyudo ...

  2. 二、Ubuntu14.04下安装Hadoop2.4.0 (伪分布模式)

    在Ubuntu14.04下安装Hadoop2.4.0 (单机模式)基础上配置 一.配置core-site.xml /usr/local/hadoop/etc/hadoop/core-site.xml ...

  3. Ubuntu14.04下安装Flash Player

    Ubuntu14.04下安装Flash Player youhaidong@youhaidong:~$ sudo apt-get install flashplugin-nonfree [sudo] ...

  4. Ubuntu14.04下 安装p4c

    参考: Github p4c README Ubuntu14.04下 安装p4c 这里提供一个直接安装p4c的脚本:install_p4c.sh. 1.git clone下来p4c: $ git cl ...

  5. Ubuntu14.04下安装Libsvm,并使用Libsvm

    (1)Ubuntu14.04下安装Libsvm 转载:https://blog.csdn.net/katrinawj/article/details/78915874 一.下载: 网址:http:// ...

  6. ubuntu14.04下安装ffmpeg

    ubuntu14.04下安装ffmpeg 一.安装各种依赖包 1.yasm(libx264需要依赖yasm) sudo apt-get install yasm 2.libx264 sudo apt- ...

  7. 在Ubuntu14.04下安装Docker CE(1) - repository篇

    从2017年3月开始,Docker开始分为社区版本和企业版,也就是Docker CE和Docker EE, 原来Ubuntu14.04下,通过sudo apt-get install docker.i ...

  8. ubuntu14.04下安装cudnn5.1.3,opencv3.0,编译caffe及配置matlab和python接口过程记录

    已有条件: ubuntu14.04+cuda7.5+anaconda2(即python2.7)+matlabR2014a 上述已经装好了,开始搭建caffe环境. 1. 装cudnn5.1.3,参照: ...

  9. ubuntu14.04下安装爬虫工具scrapy

    scrapy是目前准备要学习的爬虫框架,其在ubuntu14.04下的安装过程如下: ubuntu14.04下默认安装了2.7的python以及setuptools,若未安装,可通过下面指令安装: s ...

随机推荐

  1. 【Netty源码学习】BootStrap

    BootStrap是客户端的启动类,其主要功能就是设置必要的参数然后启动客户端. 实现如下: Bootstrap b = new Bootstrap(); b.group(group) .channe ...

  2. Android JavascriptBridge 详解(二)

    原文出自:http://blog.csdn.net/sk719887916/article/details/47189607 Android开发目前现状来说,开发者大部分时间花在UI的屏幕适配上,使用 ...

  3. Storm 0.9安装指南

    Storm 0.9.2安装指南 0 Storm0.9的亮点 引用网上的描述: "Storm 0.9.0.1版本的第一亮点是引入了netty transport.Storm网络传输机制实现可插 ...

  4. android开发之AlertDialog点击按钮之后不消失

    最近有这样一个需求,我需要用户在一个弹出框里输入密码来验证,验证成功当然好说,但是如果验证失败则需要把alertdialog的标题改为"密码错误,请重新输入",并且这个alertd ...

  5. (一一四)使用FMDB操作SQLite数据库

    上节介绍了用系统自带的C语言库操作SQLite的方法,比较繁琐,使用FMDB会大幅度简化,并且是面向对象的,使用十分方便. 使用步骤如下: 先从github下载FMDB框架,然后把它导入工程. ①导入 ...

  6. javascript之事件模型

    事件模型 冒泡型事件(Bubbling):事件由叶子节点沿祖先节点一直向上传递到根节点 捕获型事件(Capturing):由DOM树最顶元素一直到最精确的元素,与冒泡型事件相反 DOM标准事件模型:D ...

  7. JAVA之旅(二十六)——装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片

    JAVA之旅(二十六)--装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片 一.装饰设计模式 其实我们自定义re ...

  8. 下载android4.4.2源码全过程(附已下载的源码)

    今天在下载andriod源码,特来与大家分享一下我的经验.当然,网上教下载源码的教程较多,本文主要针对在GFW下下载源码出现的各种问题的解决方法. 1.首先安装下载客户端git , curl. 命令如 ...

  9. 新手学python(2):C语言调用完成数据库操作

    继续介绍本人的python学习过程.本节介绍如何利用python调用c代码.内容还是基于音乐信息提取的过程,架构如图一.Python调用c实现的功能是利用python访问c语言完成mysql数据库操作 ...

  10. 记录最近的几个bug

    记录最近出的几个bug connection reset by peer 最近服务器经常性的出现connection reset by peer的错误,开始我们只是以为小概率的网络断开导致的,可是随着 ...