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


    1.管道

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

    2.信号

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

    目的:

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

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

    特点:

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

    3.信号量

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

    特点

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

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

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

    4.共享内存

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

    5.消息队列

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

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

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

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

    6.Socket通信

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

  • 相关阅读:
    【Unity3D】UI Toolkit容器
    MySQL:Update高并发下变慢的案例及其涉及的特性
    期末前端web大作业:餐饮美食网站设计与实现——HTML+CSS+JavaScript美食餐饮网站 3页面
    Ansible 自动化运维企业实战 (二)
    [X3m]Ubuntu 根文件系统制作
    Powershell - 环境设置
    Linux开发工具的使用(vim、gcc/g++ 、make/makefile)
    Win10安装Linux--使用HyperV安装CentOS7
    【2022黑色星期五】WhatsApp营销关键要点!
    MySQL性能调优与架构设计【常见面试题】
  • 原文地址:https://blog.csdn.net/l_ethan/article/details/126449873