Я бы порекомендовал не разветвляться, а вместо этого использовать EventMachine (и отличный em-http-request , если вы используете HTTP). Управление несколькими процессами может быть немного сложнее, даже больше, чем управление несколькими потоками, но, по сравнению с этим, намного проще. Поскольку вы хотите делать в основном сетевой ввод-вывод, который состоит в основном из ожидания, я думаю, что выравниваемый подход также будет масштабироваться или лучше, чем разветвление или многопоточность. И самое главное: для этого потребуется гораздо меньше кода, и он станет более читабельным.
Даже если вы решите запустить отдельные процессы для каждой задачи, EventMachine может помочь вам написать код, который управляет подпроцессами, используя, например, EventMachine.popen
.
И, наконец, если вы хотите сделать это без EventMachine, прочитайте документы для IO.popen , Open3.popen и Open4.popen . Все делают более или менее одно и то же, но дают вам доступ к stdin, stdout, stderr (Open3, Open4) и pid (Open4) подпроцесса.