我需要以不同的速率更新具有多个不同数据的多个进程,但速度高达10 Hz。我不希望接收进程必须主动获取这些数据,而是将其推送到它们,这样它们只需要在实际存在任何(无轮询)时对新数据执行任何操作。
我只向每个进程发送了几个字节的数据。传输的数据不太可能需要永久存储,至少在被接收者接收和处理之前不需要存储。此外,没有数据的更新频率低于每几秒一次,因此接收器崩溃不是问题(一旦崩溃的接收器恢复,它可以等待下一次更新)。
我已经看过unix域套接字和UDP以及一些管道和共享内存,但似乎它们并不适合我正在尝试做的事情:
对TCP(以及支持设备间通信的其他协议)的关注是,单个设备上的进程间通信不需要这些功能,这可能会产生不必要的开销。
对参考资料和资源的任何建议和指导表示赞赏。
答案 0 :(得分:3)
你看过zeroMQ了吗?它是一个轻量级的消息传递库,支持多种传输机制上的各种推/拉访问模式。
答案 1 :(得分:2)
一种选择是在同一个盒子上写平面文件或SQLite数据库。
还有另一个控制文件,其中包含进程共享的互斥锁,条件变量和记录计数,映射到发布者和订阅者的内存中。这是通知机制。
通过这种方式,您可以在文件或数据库中获得完整的记录历史记录,从而可以轻松地重放记录,从崩溃中调试和恢复订阅者。
出版商会:
订阅者将: