У меня есть процесс c, которому необходимо отправить много c-структур (примерно 10 000 в секунду) в java-процесс, который должен помещать данные в соответствующий класс.Отправка структур из c в java-процесс
Размер данных, которые необходимо отправить, составит около 50-100 байт за пакет.
Задержка связана с тем, что данные должны отображаться в реальном времени, поэтому я ищу альтернативы моему текущему решению.
В настоящее время я делаю это с JNI и очередью сообщений POSIX. Есть ли лучший способ, чем использование JNI и очередей сообщений/труб? Я где-то читал, что при вызове методов JNI часто бывает много накладных расходов. Может ли это стать проблемой, когда нужно отправить много данных?
Другим решением, которое я имел в виду, было просто написать данные в UNIX Socket и проанализировать его в java.
Нужно ли использовать код в Java и один в C для запуска в двух отдельных процессах? –
@SamuelAudet Да, данные поступают из плагина для IDS, который должен как можно быстрее обрабатывать сетевые пакеты. После обработки пакета мы отправляем декодированные данные в другой процесс, который обрабатывает граф. Кроме того, c-процесс запускается как служба, в то время как Java-программа должна быть независимо запущена или остановлена, когда захочет, не влияя на запущенную программу c. –
Итак, я предполагаю, что файл с отображением памяти будет самым эффективным способом сделать это, и это выглядит так: http://stackoverflow.com/a/6412333/523744 –