我正在尝试同时运行500个客户端向服务器发送请求,以进行负载测试。客户端是一个Ruby程序。听起来很简单。但是我在处理Ruby线程时遇到了奇怪的问题。我的代码如下 -
n = 10
n.times do
Thread.new do
`calc`
end
end
这段代码是一个示例。我只是尝试从命令行运行calc
命令(如果您正在其他平台上尝试此代码,请将其替换为在您的命令行或shell上有效的某个命令)。这将稍后被'ruby my_client.rb
'所取代,同时n的值将被设置为500(或其他值)。
我面临的问题是,无论我想要创建多少个线程,一次只会创建3个线程。也就是说,只有3个calc窗口同时打开。其余的线程只是在队列中等待这3个线程终止。可能与阻塞和非阻塞调用有关。但是我尝试了相同程序的Java版本,它完美地工作了。有人说Ruby中的线程并不推荐使用。这是真的吗?这是Ruby线程的问题还是我做错了什么?