以下是我的赛璐珞代码。
client1.rb
2 位客户之一。(我将其命名为客户端 1)client2.rb
2 个客户中的第 2 个。(命名为客户端 2)
笔记:
上述 2 个客户端之间的唯一区别是传递给服务器的文本。即('client-1'
和'client-2'
分别)
在针对以下 2 个服务器(一次一个)测试这 2 个客户端(通过并排运行它们)时。我发现很奇怪的结果。
server1.rb
(取自赛璐珞-zmq 的README.md 的基本示例)将其用作上述 2 个客户端的示例服务器会导致任务的并行执行。
输出
ruby server1.rb
Received at 04:59:39 PM and message is client-1
Going to sleep now
Received at 04:59:52 PM and message is client-2
笔记:
当client1.rb请求处于睡眠状态时,client2.rb消息被处理。(并行标记)
-
将其用作上述 2 个客户端的示例服务器并没有导致任务的并行执行。
输出
ruby server2.rb
Received at 04:55:52 PM and message is client-1
Going to sleep now
Received at 04:56:52 PM and message is client-2
笔记:
客户端2 被要求等待 60 秒,因为客户端 1正在睡眠(60 秒睡眠)
我多次运行上述测试都导致相同的行为。
谁能从上述测试的结果中解释一下。
问题:为什么赛璐珞要等待 60 秒才能处理其他请求,即在 server2.rb 案例中注意到的那样。?
红宝石版本
ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]