Boost.Interprocess是否会牺牲性能来实现可移植性

时间:2015-10-09 15:49:13

标签: c++ boost process ipc boost-interprocess

我刚刚阅读了Boost.Interprocess文档的this page。似乎表明,为了适应不同操作系统之间的差异并达成某种协议,某些进程间机制并未使用操作系统提供的直接对应的本机机制实现,而是使用其他机制进行模拟。我想知道这是否会对性能造成相当大的影响。

该页面的最后一节对我特别关注,引用如下

  

由于每种机制都可以通过不同的机制进行模拟(a   信号量可能使用映射文件或本机信号量实现)   权限类型可能会在执行命名时发生变化   资源更改(例如:在Windows互斥锁中需要同步   权限,但不是文件的情况)。要避免这种情况,   Boost.Interprocess依赖于类似文件的权限,需要文件   读写删除权限以打开命名同步机制   (互斥,信号量等)和适当的读或读 - 写 - 删除   共享内存的权限。这种方法有两个优点:它是   类似于UNIX哲学,程序员不需要   知道命名资源是如何实现的。

基于这篇文章,我猜测大多数由Windows提供的用于进程间同步的kernel objects(例如,Event,Mutex,Semaphore)都没有被Boost.Interprocess使用。

1 个答案:

答案 0 :(得分:1)

我之前见过使用本机内核对象。

在我阅读时,该消息仅提及权限

它提到如果底层对象具有不同的访问控制,则会对其进行模拟。它实际上没有提到它是如何模仿的。