• System V IPCPOSIX IPC 有什么区别?
  • 为什么我们有两个标准?
  • 如何决定使用哪些IPC功能?
  • 最佳答案

    两者都有相同的基本工具——信号量、共享内存和消息队列。它们为这些工具提供了略有不同的界面,但基本概念是相同的。一个显着的区别是 POSIX 为消息队列提供了一些 Sys V 没有的通知功能。 (见 mq_notify() 。)

    Sys V IPC 已经存在的时间更长了,这有几个实际意义——

    首先,POSIX IPC 的实现不那么广泛。我为 POSIX IPC 和 its documentation lists what I know about POSIX IPC implementations on various platforms 编写了一个 Python 包装器。

    在该文档中列出的所有平台上,Sys V IPC 完全实现了 AFAIK,而您可以看到 POSIX IPC 不是。

    它们相对年龄的第二个含义是 POSIX IPC 是在 Sys V IPC 使用一段时间后设计的。因此,POSIX API 的设计者能够从 Sys V API 的优点和缺点中学习。因此 POSIX API 更简单
    并且更易于使用 IMO,我推荐它通过 Sys V API。

    我应该注意,我从未运行过任何性能测试来比较两者。我认为旧的 API (Sys V) 会有更多的时间
    进行性能调整,但这只是猜测,当然不能替代现实世界的测试。

    至于为什么有两个标准——POSIX 创建了他们的标准,因为他们认为这是对 Sys V 标准的改进。但是,如果每个人都同意 POSIX IPC 更好,那么许多程序仍然使用 Sys V IPC,将它们全部移植到 POSIX IPC 需要数年时间。在实践中,这样做是不值得的,因此即使所有新代码从明天开始都使用 POSIX IPC,Sys V IPC 仍会存在很多年。

    我们无法在不了解更多关于您打算做什么的情况下告诉您应该使用哪个,但是您在此处获得的答案应该为您提供足够的信息以供您自行决定。

    关于posix - System V IPC 与 POSIX IPC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4582968/

    10-13 00:33