Синхронизация между процессами Linux, работающими на разных скоростях - PullRequest
0 голосов
/ 19 октября 2019

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

Проблема, с которой я сталкиваюсь, заключается в том, что иногда B требуется много времени для передачи данных в сокет. Поскольку A запрашивает данные со скоростью 1 мс, очередь заполняется, и, следовательно, частота запросов также уменьшается, т. е. когда очередь заполнена, B должен читать данные из очереди, только тогда A может перекачать данные в очередь, а затем прочитать новые данные с устройства. а затем ждать место в очереди.

У меня есть ограничение, что я должен запрашивать данные с устройства I2c на 1ms.

Как мне поступить, что А может продолжать собирать данные, а также обрабатывать медленное выполнениеB?

...