我刚刚阅读了Boost.Interprocess文档的this page。似乎表明,为了适应不同操作系统之间的差异并达成某种协议,某些进程间机制并未使用操作系统提供的直接对应的本机机制实现,而是使用其他机制进行模拟。我想知道这是否会对性能造成相当大的影响。
该页面的最后一节对我特别关注,引用如下
由于每种机制都可以通过不同的机制进行模拟(a 信号量可能使用映射文件或本机信号量实现) 权限类型可能会在执行命名时发生变化 资源更改(例如:在Windows互斥锁中需要同步 权限,但不是文件的情况)。要避免这种情况, Boost.Interprocess依赖于类似文件的权限,需要文件 读写删除权限以打开命名同步机制 (互斥,信号量等)和适当的读或读 - 写 - 删除 共享内存的权限。这种方法有两个优点:它是 类似于UNIX哲学,程序员不需要 知道命名资源是如何实现的。
基于这篇文章,我猜测大多数由Windows提供的用于进程间同步的kernel objects(例如,Event,Mutex,Semaphore)都没有被Boost.Interprocess使用。
答案 0 :(得分:1)
我之前见过使用本机内核对象。
在我阅读时,该消息仅提及权限。
它提到如果底层对象具有不同的访问控制,则会对其进行模拟。它实际上没有提到它是如何模仿的。