sách gpt4 ai đã đi

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

In lại 作者:行者123 更新时间:2023-12-01 09:24:29 31 4
mua khóa gpt4 Nike

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

  • tài liệu
  • Tín hiệu
  • socket
  • 消息队列
  • 管道
  • 命名管道
  • Semaphore
  • 共享内存
  • 消息传递
  • 内存映射文件

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

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

1 Câu trả lời

长话短说:

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

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

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

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

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

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

31 4 0
Bài viết được đề xuất: scala - 可以使用 reduceBykey 来更改类型和组合值 - Scala Spark?
Bài viết được đề xuất: java - Android 音频环回
Bài viết được đề xuất: java - 无法使用 JMOD 打包已签名的 Java 安全提供程序
Bài viết được đề xuất: image - vba 电子邮件嵌入图像未显示
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com