Я работаю над серверным приложением для встроенной платформы ARM. Плата ARM подключена к различным цифровым IO, АЦП и т. Д., Которые система будет постоянно опрашивать. В настоящее время работает ядро Linux с аппаратными интерфейсами, разработанными в качестве драйверов. Идея состоит в том, чтобы иметь клиентское приложение, которое может подключаться к встроенному устройству и получать сенсорные данные по мере их обновления и выдавать команды устройству (датчик выключения 1, датчик перезапуска 2 и т. Д.). Предположим, что доступ к сенсорным устройствам осуществляется через типичный ioctl.
Теперь мой вопрос касается дизайна / архитектуры этого серверного приложения, работающего на встроенном устройстве. Сначала я думал использовать что-то вроде libevent или libev , облегченных библиотек обработки событий на Си. Приложение установит приоритет события опроса датчика (и затем отправит информацию клиенту после завершения опроса) и обработает клиентские команды по мере их получения (через типичный сокет TCP). Сервер обычно имеет одно соединение, но может иметь до дюжины или около того, но не что-то вроде тысяч соединений. Это лучший подход к разработке чего-то подобного? Из двух перечисленных мной библиотек обработки событий одна лучше для встроенных приложений или есть другие альтернативы?
Другой рассматриваемый подход - это многопоточное приложение, в котором опрос датчика выполняется в приоритетном / блокирующем потоке, который считывает сенсорные данные, а каждое клиентское соединение обрабатывается в отдельном потоке. Сенсорные данные обновляются в своего рода структуру буфера / данных, и потоки соединения обрабатывают отправку данных клиенту и обработку клиентских команд (я предположил, что вам все равно понадобится цикл сортировки событий в этих потоках для отслеживания входящих команд) , Существуют ли какие-либо библиотеки или типичные пакеты, которые облегчают разработку такого приложения, или это то, что вы должны начать с нуля?
Как бы вы разработали то, что я пытаюсь достичь?