• 进程间通信的方式及其特点


    1.管道

    在内核内存中维护一个缓冲器,这个缓冲器的存储能力有限的,可以读写操作,有名管道(FIFO)有文件实体,匿名管道(PIPE)没有文件实体。匿名管道只能用于具有公共祖先的进程。半双工,一端用于写入,一端用于读取。(同一个时间只能往同一个方向,方向是可以双向的)

    2.信号

    简介:是事件发生时的通知机制,有时也可以称之为软件中断,是一种异步通信的方式。

    目的:

    1.让进程知道已经发生了一个特定的事情

    2.强迫进程执行自己代码中的信号处理程序

    特点:

    1.简单2.不能携带大量信息3.满足某个特定的条件发送4.优先级高

    3.信号量

    主要用于进程间以及同一进程不同线程之间的同步手段

    特点

    1.本质是一个计数器,内存中有多少个临界资源,信号量的数字就是多少

    2.信号量基于操作系统的pv操作,程序对信号量的操作都是原子操作

    3.信号量用于进程间同步,如果要进程间传递数据需要结合共享内存

    4.共享内存

    共享内存是效率最高的通信方式,允许两个或者多个进程共享物理内存的同一块区域.由于一个共享内存段会成为一个进程用户空间的一部分,所以这种机制无需内核介入

    5.消息队列

    提供了一种在两个不相关的进程之间传递数据的简单高效的方法。消息发送后可以立刻返回,有消息系统来确保信息的可靠传递,消息发布者只管把消息发布到消息队列中而不管谁来取走,消息使用者只管从消息队列中去消息而不管谁发布的。

    解耦:只要保证消息格式不变,发送发和接收方可以不受对方的影响

    异步:非核心流程异步化,提高系统响应性能。

    削峰:限制用户数量,将接受的用户请求写入消息队列中,然后消息队列长度超过最大数量,直接抛弃用户请求或跳转到错误节目

    6.Socket通信

    网络中不同主机上的应用进程之间双向通信的端口的抽象。Linux下本质为内核借助缓冲区形成的伪文件。可以用文件描述符来引用套接字。

  • 相关阅读:
    Layui 主窗口调用 iframe 弹出框模块,获取控件的相应值
    数学建模学习笔记:层次分析法(AHP)
    Windows环境如何ssh远程连接本地局域网内的Archcraft系统
    1560分钟一节课VUE项目从入门到精通
    #775 Div.1 C. Tyler and Strings 组合数学
    Google浏览器和IE浏览器配置User-Agent方法
    JAVA:实现DynamicArray动态数组算法(附完整源码)
    Allegro格式PCB转换成Pads操作指导
    【大数据】Flink 内存管理(三):TaskManager 内存分配(理论篇)
    JAVA——异常
  • 原文地址:https://blog.csdn.net/l_ethan/article/details/126449873