Ruby 多线程的潜力和弱点分析
Web应用大多是IO密集型的,利用Ruby多进程+多线程模型将能大幅提升系统吞吐量。其原因在于:当Ruby某个线程处于IOBlock状态时,其它的线程还可以继续执行。但由于存在RubyGIL(GlobalInterpreterLock),MRIRuby并不能真正利用多线程进行并行计算。JRuby去除了GIL,是真正意义的多线程,既能应付IOBlock,也能充分利用多核CPU加快整体运算速度。
上面说得比较抽象,下面就用例子一一加以说明。
Ruby多线程和IOBlock
先看下面一段代码(演示目的,没有实际用途):
#File:block_io1.rb
deffunc1 puts"sleep3secondsinfunc1\n" sleep(3) end
deffunc2 puts"sleep2secondsinfunc2\n" sleep(2) end
deffunc3 puts"sleep5secondsinfunc3\n" sleep(5) end
func1 func2 func3
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短