以下是我的Celluloid代码。
client1.rb
其中一个客户端。(我将其命名为客户端1)client2.rb
这是另外一个客户端。(命名为客户端2)
注意:
以上两个客户端之间唯一的区别是发送给服务器的文本。(分别为'client-1'
和'client-2'
)
当我对这两个客户端进行测试(同时运行它们),并连接以下两个服务器(逐一)时,我发现了非常奇怪的结果。
server1.rb
(从celluloid-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
注意:
client2.rb消息在client1.rb请求处于休眠状态时被处理。(并行标记)
-
将其作为上述两个客户端的示例服务器使用,未能导致任务的并行执行。
OUTPUT
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
注意:
client-2被要求等待60秒,因为client-1正在睡眠(60秒的睡眠)
我运行了上述测试多次,结果都一样。
有人能从上述测试结果中解释一下吗?
问题:为什么在处理其他请求之前celluloid需要等待60秒,即如在server2.rb案例中所示?
Ruby版本
ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
server2.rb
中不使用DisplayMessage
类吗?这也是一个不同之处。 - digitalextremist