System V IPC
和POSIX IPC
之间的区别是什么?发布于 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也会存在很多年。
在不了解更多关于您打算做什么的情况下,我们不能告诉您应该使用哪种方法,但是您在这里获得的答案应该会给您足够的信息来自行决定。
发布于 2011-01-03 17:26:08
发布于 2016-11-15 22:14:56
System V IPC较旧,而POSIX IPC较新。然而,在某些方面存在一些差异。Posix并不总是比System V更好。
https://stackoverflow.com/questions/4582968
复制相似问题