以下は私のセルロイドコードです。
client1.rb
2 クライアントのうちの 1 つ。(クライアント1と名付けました)client2.rb
2 クライアントの 2 番目。(クライアント 2 と命名)
ノート:
上記の 2 つのクライアントの唯一の違いは、サーバーに渡されるテキストです。すなわち('client-1'
および'client-2'
それぞれ)
次の 2 つのサーバー (一度に 1 つ) に対して、この 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
ノート:
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は、クライアント 1がスリープ状態になって から 60 秒間待機するように求められました(60 秒間スリープ)
上記のテストを複数回実行しましたが、すべて同じ動作になりました。
上記のテストの結果から、誰でも説明できますか。
質問:他のリクエストを処理する前にセルロイドが 60 秒間待たされるのはなぜですか?
ルビー版
ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]