并提高.进程间牺牲性能来实现可移植性

Does Boost.Interprocess sacrifice performance to achieve portability

本文关键字:性能 实现 可移植性 牺牲 进程      更新时间:2023-10-16

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

那一页的最后一节特别与我有关,下面引用

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

基于这篇文章,我猜大多数内核对象由Windows提供的本地进程间同步(例如,事件,互斥,信号量)只是不被Boost.Interprocess使用。

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

当我阅读它时,消息只谈到权限

它提到,这是在底层对象具有不同访问控制的情况下模拟的。它实际上并没有提到它是如何被模拟的