У меня есть критичное по времени приложение, которому необходимо отправить дейтаграмму UDP по заданному расписанию. Допуск на джиттер на принимающей стороне очень низок. Реализация этого с помощью java ScheduledThreadPoolExecutor неадекватна, потому что, когда сборщик мусора выполняет сбор «Остановить мир», мой поток приостанавливается, пока сборщик мусора выполняет свою работу.
Я хотел бы реализовать бизнес-логику на Java, реализуя критические по времени части с потоками POSIX на С++ (кстати, родной средой является Linux). Это позволило бы нам сохранить тысячи строк кода, написанного на Java, а также получить необходимый темп от нативных системных вызовов.
Мой вопрос заключается в следующем: если я вызову функцию JNI, которая создает отдельный поток POSIX, будет ли этот поток «приостановлен», когда Java GC выполняет сбор «Остановить мир»? Есть ли какие-либо подводные камни, на которые опытный гуру JNI хотел бы указать в этом подходе, или какие-либо альтернативные подходы, которые можно было бы предложить?
Как всегда, спасибо замечательному сообществу переполнения стека!