System V IPC和之间有什么区别POSIX IPC?小智 99
两者都有相同的基本工具 - 信号量,共享内存和消息队列.它们为这些工具提供了略微不同的界面,但基本概念是相同的.一个值得注意的区别是POSIX为Sys V不提供的消息队列提供了一些通知功能.(见mq_notify().)
Sys V IPC已经存在了很长时间,具有一些实际意义 -
首先,POSIX IPC的实施较少.我为POSIX IPC编写了一个Python包装器,它的文档列出了我对各种平台上POSIX IPC实现的了解.
在该文档中列出的所有平台上,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也会坚持多年.
我们不能告诉你哪些你应该使用而不知道你打算做什么,但你在这里得到的答案应该给你足够的信息来自己决定.
System V IPC较旧,POSIX IPC较新.但是在某些方面存在一些差异.并不总是Posix比System V更好.
Posix的信号量,队列和共享内存具有Ascii字符串名称,而在System V下,这些名称以整数给出.
如果进程死亡(semop SEM_UNDO标志),System V信号量允许自动释放.Posix没有这样的东西.
在Linux和FreeBSD上,posix队列有很大的优势,因为mq_open给出的处理程序基本上是文件描述符,可以进行轮询/ epolled/selected/kqueued.
| 归档时间: |
|
| 查看次数: |
45501 次 |
| 最近记录: |