以不同速度运行的Linux进程之间的同步

以不同速度运行的Linux进程之间的同步,linux,raspberry-pi,ipc,message-queue,i2c,Linux,Raspberry Pi,Ipc,Message Queue,I2c,我有两个用C编写的进程,一个进程(假设A以1ms的速率从I2C设备获取数据)和另一个进程(假设B获取数据并将其馈送到python脚本(通过系统调用)并写入套接字。我使用消息队列在进程之间共享数据 我面临的问题是,有时B需要很长时间才能将数据提供给套接字。由于A以1ms的速率查询数据,队列将变满,因此查询速率也会降低,即,当队列已满时,B必须从队列中读取数据,只有这样A才能将数据泵入队列,然后从设备读取新数据,然后等待队列中的空间 我有一个限制,我应该在1ms处从I2c设备查询数据 我应该如何处理

我有两个用C编写的进程,一个进程(假设A以1ms的速率从I2C设备获取数据)和另一个进程(假设B获取数据并将其馈送到python脚本(通过系统调用)并写入套接字。我使用消息队列在进程之间共享数据

我面临的问题是,有时B需要很长时间才能将数据提供给套接字。由于A以1ms的速率查询数据,队列将变满,因此查询速率也会降低,即,当队列已满时,B必须从队列中读取数据,只有这样A才能将数据泵入队列,然后从设备读取新数据,然后等待队列中的空间

我有一个限制,我应该在
1ms
处从
I2c
设备查询数据


我应该如何处理A可以继续收集数据,同时也可以处理B执行缓慢的问题

是否可以同时运行B的多个副本?B是否会在向Python脚本提供数据时阻塞?确保以异步方式执行此操作。如果由于某种原因不可能,请在B中创建两个单独的线程。一个线程应与A通信,另一个线程应将数据提供给Python脚本。为此,您必须使用RTOS和适当的驱动程序。