系统相关
首页 > 系统相关> > Linux进程间通信

Linux进程间通信

作者:互联网

信号量

通过两组互斥锁完成进程同步,几乎不可能传递消息。其实就是个互斥结构,很常见的东西。只是当年提出的早。

比如音频播放完了,机器人才能接受新的音频,用一个互斥锁锁住。
比如虚拟人动画在未播放完当前动画时候,不能接受新的动画指令。用一个互斥锁锁住。

管道

父子进程,无名管道通信。最好父子限制读写。

FIFO,有名管道通信。速度很慢。比access数据库慢,比socket慢。就像是socket方式通信却每次bit数组仅传递1位消息。

共享内存。

单机速度快。

原理是用一个指针指向内存。然后读写这个指针,仅仅能读一次。
共享内容状态,读写共享内容同时存在状态为2,仅一个存在为1,都不存在则无

ipcs

image

消息队列

缺乏了解。速度不错。总感觉传输大小应该有限制。

Socket

Socket单机速度和局域网速度实际上很快。在RIMA机器人上面实际测试过。当然大规模的传送图形,视频流应该有问题。

ROS机器人在2007年没有使用socket的原因是消息拥塞,以及不适应多智能体。但是ROS1的问题依然是消息拥塞的丢失和不适应多智能体,以及缺乏加密安全,非实时性程序经常崩溃。

另一方面,个人认为TCP同步传输消耗大量的资源以及缺乏消息传输优先级的设计。

现在基本上使用消息中间件进行通信,一方面多种通信方式解决了消息拥塞问题,另一方面消息中间件和内核绑定,内核不崩溃,消息中间件不会崩溃。

标签:socket,Linux,通信,间通信,互斥,拥塞,消息,消息中间件,进程
来源: https://www.cnblogs.com/fengmao31/p/16171576.html