通过两组互斥锁完成进程同步,几乎不可能传递消息。其实就是个互斥结构,很常见的东西。只是当年提出的早。
比如音频播放完了,机器人才能接受新的音频,用一个互斥锁锁住。
比如虚拟人动画在未播放完当前动画时候,不能接受新的动画指令。用一个互斥锁锁住。
父子进程,无名管道通信。最好父子限制读写。
FIFO,有名管道通信。速度很慢。比access数据库慢,比socket慢。就像是socket方式通信却每次bit数组仅传递1位消息。
单机速度快。
原理是用一个指针指向内存。然后读写这个指针,仅仅能读一次。
共享内容状态,读写共享内容同时存在状态为2,仅一个存在为1,都不存在则无
ipcs
缺乏了解。速度不错。总感觉传输大小应该有限制。
Socket单机速度和局域网速度实际上很快。在RIMA机器人上面实际测试过。当然大规模的传送图形,视频流应该有问题。
ROS机器人在2007年没有使用socket的原因是消息拥塞,以及不适应多智能体。但是ROS1的问题依然是消息拥塞的丢失和不适应多智能体,以及缺乏加密安全,非实时性程序经常崩溃。
另一方面,个人认为TCP同步传输消耗大量的资源以及缺乏消息传输优先级的设计。
现在基本上使用消息中间件进行通信,一方面多种通信方式解决了消息拥塞问题,另一方面消息中间件和内核绑定,内核不崩溃,消息中间件不会崩溃。