进程间的通信方式

无名管道,有名管道,信号,消息队列,共享内存,socket

项目Value
无名管道最简单,数据只能读取一次,半双工,匿名管道只能是有血缘关系间的通信
有名管道用于没有血缘关系间的进程通信
信号简单,携带的信息量少,使用在特定的场景,优先级高。建议不要使用信号量在进程间的通信,因为信号的优先级高会打破原有进程的执行过程
消息队列消息队列是消息的链表,存放在内存中,由内核维护 消息队列的特点 1、消息队列中的消息是有类型的。 2、消息队列中的消息是有格式的。 3、消息队列可以实现消息的随机查询。消息不一定要以先进先出的次序读取,编程时可以按消息的类型读取。4、消息队列允许一个或多个进程向它写入或者读取消息。 5、与无名管道、命名管道一样,从消息队列中读出消息,消息队列中对应的数据都会被删除。6、每个消息队列都有消息队列标识符,消息队列的标识符在整个系统中是唯一的。7、只有内核重启或人工删除消息队列时,该消息队列才会被删除。若不人工删除消息队列,消息队列会一直存在于系统中。
共享内存效率高,不需要太多次数据拷贝,可以直接读写,缺点:不能保证数据同步,只能借助信号量保证同步
socket主要用于网络中的进程间通信,通信过程以及数据复杂,但安全可靠
posted @ 2022-07-27 14:36  萧海~  阅读(23)  评论(0编辑  收藏  举报