Я пытаюсь запустить 500 клиентов, которые одновременно отправляют некоторый запрос на сервер для целей нагрузочного тестирования. Клиент снова является программой ruby. Звучит банально. Но я столкнулся со странной проблемой с рубиновыми нитями. Мой код выглядит так -
n = 10
n.times do
Thread.new do
`calc`
end
end
Код является примером. Я просто пытаюсь запустить команду calc
из командной строки (если вы пробуете этот код на платформе, отличной от Windows, замените ее на какую-нибудь команду, которая работает в вашей командной строке или оболочке). Позже это будет заменено на 'ruby my_client.rb
', а также значение n будет установлено на 500 (или что-то еще).
Проблема, с которой я здесь сталкиваюсь, заключается в том, что независимо от количества потоков, которые я хочу создать, одновременно создаются только 3 потоков. То есть только 3 окна калькулятора открываются одновременно. Остальные потоки просто ждут в очереди, ожидая завершения этих 3 потоков. Может быть, это как-то связано с блокирующими и неблокирующими вызовами. Но я попробовал Java-эквивалент той же программы, и он работал отлично. Это старая поговорка, что нити в ruby не рекомендуются. Правда ли, что это проблема с нитями Руби или я что-то не так делаю?