Ниже приведены мои целлулоидные коды.
-
client1.rb
Один из двух клиентов. (Я назвал его клиентом 1) -
client2.rb
2-й из 2-х клиентов. (называемый клиентом 2)
Примечание:
единственная разница между двумя выше указанными клиентами - это текст, который передается серверу. iee ('client-1'
и 'client-2'
соответственно)
При тестировании этих 2 клиентов (путем их параллельной работы) против следующих 2 серверов (по одному на время). Я нашел очень странные результаты.
-
server1.rb
(базовый пример, взятый из README.md целлулоида-zmq)Использование этого в качестве примера сервера для 2 вышеуказанных клиентов привело к параллельным выполнению задач.
OUTPUT
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 находился во сне. (знак parallelism)
-
Использование этого в качестве примера сервера для 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
ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]