经测试,RUBY的线程用在网络这一块还是有点用_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > 经测试,RUBY的线程用在网络这一块还是有点用

经测试,RUBY的线程用在网络这一块还是有点用

 2011/10/28 8:17:48  cxh116  http://mangege.iteye.com  我要评论(0)
  • 摘要:当网络阻塞时,虽然RUBY的线程是非原生线程,其作用还是在服务器端用phpg写了一个小页面,软件是用nginx+fastcgi,spawn-fcgi设置-C为20,启动20个进程,这样在多线程测试才有效,不然就是一个phpcgi进程上面的队列,必须等第一个请求完成,第二个请求才会处理php页面代码<?phpsleep(3);phpinfo();?>rub测试端require'open-uri's=Time.nowputss10.timesdoopen("http
  • 标签:Ruby 测试 网络 线程
当网络阻塞时,虽然RUBY的线程是非原生线程,其作用还是在

服务器端
用phpg写了一个小页面,软件是用nginx+fastcgi,spawn-fcgi设置-C 为 20,启动20个进程,这样在多线程测试才有效,不然就是一个php cgi进程上面的队列,必须等第一个请求完成,第二个请求才会处理

php页面代码
<?php
  sleep(3);
  phpinfo();
?>


rub测试端
require 'open-uri'
s = Time.now
puts s
10.times do
  open("http://localhost/index.php")
end
e = Time.now
puts e
puts "no thread #{e -s}"

threads = []
s = Time.now
puts s
10.times do
  threads.push(Thread.new{ open("http://localhost/index.php") })
end
while true
  threads.each {|t| 
    if t.alive?
      Thread.pass
      break
    else
      threads.delete t
    end
  }
  break if threads.length < 1
end
e = Time.now
puts e
puts "thread #{e -s}"


测试结果,不用线程耗时30秒,启动10个线程,耗时3秒
发表评论
用户名: 匿名