在Linux中将数据发送到多个进程
作者:互联网
我需要以不同的速率更新具有多个不同数据的多个进程,但速度高达10 Hz.我不希望接收进程必须主动获取这些数据,而是将其推送到它们,这样它们只需要在实际存在任何(无轮询)时对新数据执行任何操作.
我只向每个进程发送了几个字节的数据.传输的数据不太可能需要永久存储,至少在被接收者接收和处理之前不需要存储.此外,没有数据更新频率低于每几秒一次更新,因此接收器崩溃不是问题(一旦崩溃的接收器恢复,它可以等待下一次更新).
我已经看过unix域套接字和UDP以及一些管道和共享内存,但似乎它们并不适合我正在尝试做的事情:
>域套接字要求发送方向每个接收方发送单独的消息(即,没有广播/多播)
>共享内存的缺点是让客户端检查数据是否已更新(除非有一种我不熟悉的机制可以通知他们)
> UDP不保证消息将到达(可能不会在同一台计算机上进行通信问题?),我对网络堆栈的开销(域套接字没有)有所顾虑
对TCP(以及支持设备间通信的其他协议)的关注是,在单个设备上存在进程间通信所不需要的功能,并且这可能产生不必要的开销.
任何建议和参考和资源的方向表示赞赏.
解决方法:
你看过zeroMQ吗?它是一个轻量级的消息传递库,支持多种传输机制上的各种推/拉访问模式.
标签:inter-process-communicat,interprocess,linux,unix 来源: https://codeday.me/bug/20190830/1769984.html