У меня есть ситуация, когда я хочу запустить несколько EventMachines в Ruby - у кого-нибудь есть опыт с этим? (Я могу написать тестовый пример, чтобы сделать это сам, если нет. Оставайтесь с нами).
Давайте проясним: я хочу создать два потока сам и вызвать EventMachine.run
в обоих потоках, так что у меня действительно есть две реакторные петли.
Причина в том, что я пишу асинхронную шину сообщений с гемом AMQP, который использует EventMachine. Это нормально, но я хочу сделать это отдельным модульным компонентом, который можно использовать в двух приложениях:
- тот, который имеет свой собственный цикл блокировки графического интерфейса (который не может быть смоделирован путем вызова тика из EventMachine - он действительно блокирует, и делает это в библиотеке C, поэтому я не могу его взломать). Это просто - просто запустите EM в своем собственном потоке и делитесь входящими сообщениями между циклами потокобезопасным способом;
- и другое приложение, которое само по себе работает в цикле реактора, которым я мог бы потенциально поделиться с кодом AMQP (что хорошо для проблем безопасности потоков - хотя я должен решить их в любом случае для вышеупомянутого приложения) ). Именно это заставило меня задуматься ... могу ли я поделиться кодом шины сообщений с вышеуказанным приложением, запустив две отдельные EventMachines?
У кого-нибудь есть мысли?