首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >System V IPC与POSIX IPC

System V IPC与POSIX IPC
EN

Stack Overflow用户
提问于 2011-01-03 16:17:38
回答 4查看 53.5K关注 0票数 89
  1. System V IPCPOSIX IPC之间的区别是什么?
  2. 为什么我们有两个标准?
  3. 如何确定要使用的IPC函数?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-04 09:21:17

两者都有相同的基本工具--信号量、共享内存和消息队列。它们为这些工具提供了略有不同的接口,但基本概念是相同的。一个值得注意的区别是,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完全实现了AFAIK,而您可以看到POSIX IPC不是。

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

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

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

在不了解更多关于您打算做什么的情况下,我们不能告诉您应该使用哪种方法,但是您在这里获得的答案应该会给您足够的信息来自行决定。

票数 111
EN

Stack Overflow用户

发布于 2011-01-03 17:26:08

我认为主要的区别在于所有的POSIX都是线程安全的,而大多数的IPC不是

  1. SysV [2]的。创建Single UNIX规范(SUS) [3],也就是POSIX,是为了在基于Unix的系统上标准化接口而创建的。完全取决于您的requirements.
票数 24
EN

Stack Overflow用户

发布于 2016-11-15 22:14:56

System V IPC较旧,而POSIX IPC较新。然而,在某些方面存在一些差异。Posix并不总是比System V更好。

  1. Posix的信号量、队列和共享内存具有Ascii字符串名称,而在System V下,这些名称是整数。
  2. 如果进程死了,System V信号量允许自动释放(semop SEM_UNDO标志)。
  3. 在Linux和FreeBSD上使用posix队列有很大的优势,因为mq_open给出的处理程序基本上都是文件描述符,可以是polled/epolled/selected/kqueued.
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4582968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档