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 婚前女儿生日祝福语简短