gpt4 book ai didi

sockets - 我应该在哪个时刻使用哪种进程间通信(ipc)机制?

转载 作者:行者123 更新时间:2023-12-01 09:24:29 30 4
gpt4 key购买 nike

我知道进程间通信 (ipc) 有几种方法,例如:

  • 文件
  • 信号
  • socket
  • 消息队列
  • 管道
  • 命名管道
  • 信号量
  • 共享内存
  • 消息传递
  • 内存映射文件

但是我无法找到将这些机制相互比较并指出它们在不同环境中的好处的列表或论文。

例如,我知道如果我使用一个由进程 A 写入并由进程 B 读出的文件,它可以在任何操作系统上运行并且非常健壮,另一方面 - 为什么我不应该使用 TCP 套接字?有没有人概述在哪些情况下哪种方法最合适?

最佳答案

长话短说:

  • 当进程竞争稀缺资源时,使用锁文件、互斥体、信号量和屏障。它们以类似的方式运行:多个进程尝试获取一个同步原语,其中一些获取同步原语,其他的进入休眠状态,直到原语再次可用。使用信号量来限制使用资源的进程数量。使用互斥量将数量限制为 1。

  • 您可以通过使用非阻塞线程安全数据结构来部分避免使用同步原语。

  • 当进程需要交换数据时,使用信号、队列、管道、事件、消息、unix 套接字。信号和事件通常用于通知进程某事(例如,unix 终端中的 ctrl+c 向进程发送 SIGINT 信号)。管道、共享内存和 unix 套接字用于传输数据。

  • 使用套接字进行联网(或者,正式地说,用于在位于不同机器上的进程之间交换数据)。

长话短说:看看 Tanenbaum 和 Bos 的《现代操作系统》 一书,即 IPC 章节。该主题非常广泛,无法在列表或论文中完全涵盖。

关于sockets - 我应该在哪个时刻使用哪种进程间通信(ipc)机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40005935/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com