• 进程通信的7种方式


    1、管道

    管道的实质是一个内核缓冲区,管道的一端顺序写入数据,管道的另一端顺序读取数据。
    由于没有名字,所以管道只能用于具有亲缘关系的进程之间

    2、有名管道

    有名管道不同于匿名管道之处在于它提供了一个路径名与之关联,以有名管道的文件形式存在于文件系统中。
    这样,即使与有名管道的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够相互通信。

    3、共享内存

    共享内存使得多个进程可以可以直接读写同一块内存空间,是最快的可用进程间通信形式。是针对其他通信机制运行效率较低而设计的。
    为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间。
    进程就可以直接读写这一块内存而不需要进行数据的拷贝,从而大大提高效率。 由于多个进程共享一段内存,因此需要依靠某种同步机制(如信号量)来达到进程间的同步及互斥。

    4、消息队列

    消息队列是存放在内核中的消息链表,每个消息队列由消息链表标识

    5、信号

    ⽤于通知接收进程某个事件已经发⽣;

    6、信号量

    信号量是一个计数器,用于多进程对共享数据的访问,信号量的意图在于进程间同步。

    7、套接字(Socket)

    套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行。

    也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。

    套接字是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点.

    简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。

    [ 版权声明 ]: 本文所有权归作者本人,文中参考的部分已经做了标记! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处!
  • 相关阅读:
    selectHelper
    Windows Server 2003 下实现网络负载均衡(2) (转)
    顺序栈
    线性表链式存储
    线性表顺序存储
    Swift
    组件化
    swift
    Swift
    Swift
  • 原文地址:https://www.cnblogs.com/gslgb/p/14520489.html
Copyright © 2020-2023  润新知