zoukankan      html  css  js  c++  java
  • 进程间的通信方式汇总

          近期在设计一个多进程的系统,主进程和子进程的通讯和调用方式是当中的一个关键问题,程序须要考虑跨平台和跨语言,后台守护进程和UI界面,子进程管理等,对可靠性要求高,还是非常复杂的。

    今天掰一掰进程间通信的问题

    # 命令行參数和返回值调用。最直接的方法

        跨平台和跨语言应该OK


    # 管道( pipe ):管道是一种半双工的通信方式,数据仅仅能单向流动。并且仅仅能在具有亲缘关系的进程间使用。

    进程的亲缘关系一般是指父子进程关系。

        windows下管道不好用吧


    # 有名管道 (named pipe) : 有名管道也是半双工的通信方式,可是它同意无亲缘关系进程间的通信。

    linux/unix上的
    # 信号量( semophore ) : 信号量是一个计数器,能够用来控制多个进程对共享资源的訪问。它常作为一种锁机制,防止某进程正在訪问共享资源时,其它进程也訪问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
    # 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。

    消息队列克服了信号传递信息少、管道仅仅能承载无格式字节流以及缓冲区大小受限等缺点。
    # 信号 ( sinal ) : 信号是一种比較复杂的通信方式,用于通知接收进程某个事件已经发生。

    # 共享内存( shared memory ) :共享内存就是映射一段能被其它进程所訪问的内存,这段共享内存由一个进程创建,但多个进程都能够訪问。共享内存是最快的 IPC 方式,它是针对其它进程间通信方式执行效率低而专门设计的。

    它往往与其它通信机制,如信号两。配合使用,来实现进程间的同步和通信。


    # 套接字( socket ) : 套解口也是一种进程间通信机制,与其它通信机制不同的是,它可用于不同及其间的进程通信。

    跨平台应该ok

  • 相关阅读:
    AtCoder Beginner Contest 167
    AtCoder Beginner Contest 166
    AtCoder Beginner Contest 165
    AtCoder Beginner Contest 164
    AtCoder Beginner Contest 163
    AtCoder Beginner Contest 162
    AtCoder Beginner Contest 161
    AtCoder Beginner Contest 160
    AtCoder Beginner Contest 159
    自定义Mybatis自动生成代码规则
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6752299.html
Copyright © 2011-2022 走看看