У меня есть два процесса, написанных на C, один процесс, скажем, A выбирает данные с устройства I2C со скоростью 1 мс, а другой процесс, скажем, B, принимает эти данные и передает их в скрипт python (через системный вызов), который записывает вразъем. Я использую очереди сообщений для обмена данными между процессами.
Проблема, с которой я сталкиваюсь, заключается в том, что иногда B требуется много времени для передачи данных в сокет. Поскольку A запрашивает данные со скоростью 1 мс, очередь заполняется, и, следовательно, частота запросов также уменьшается, т. е. когда очередь заполнена, B должен читать данные из очереди, только тогда A может перекачать данные в очередь, а затем прочитать новые данные с устройства. а затем ждать место в очереди.
У меня есть ограничение, что я должен запрашивать данные с устройства I2c
на 1ms
.
Как мне поступить, что А может продолжать собирать данные, а также обрабатывать медленное выполнениеB?