boost :: interprocess_mutex vs process本地boost :: mutex

时间:2012-12-04 13:13:33

标签: c++ boost synchronization boost-interprocess

我正在开发一个在整个地方都使用boost::interprocess_mutex的项目,即使应用程序从来都不是fork()个孩子,但是很大程度上依赖于多线程。

假设所有这些interprocess_mutex es可以被进程本地互斥锁替换而不破坏任何内容是否正确?

我的假设是,这可能会提高性能(如果只是一个最小因素)正确吗?

在单个(可选的多线程)进程中使用进程间同步是否有任何可能的原因?

1 个答案:

答案 0 :(得分:3)

它是使用共享内存还是其他一些IPC机制?并且是多个应用程序使用的内存?那是考验......

它没有fork,可能有不同的代码库(单独的可执行文件)共享一些资源。例如,是否存在监控应用程序或界面,当应用程序通过某种IPC机制运行时,它会从应用程序获取统计信息?请注意,可能还有其他更好的方法,这只是一个例子。

查看标题:

http://www.boost.org/doc/libs/1_52_0/boost/interprocess/sync/windows/mutex.hpp

http://www.boost.org/doc/libs/1_52_0/boost/interprocess/sync/posix/mutex.hpp

有一个开销,用本地版本(如果安全)替换它可以获得一些效率。然而,我并不太熟悉Posix的实现。

如上所述,如果外部应用程序使用某些说共享内存来获取统计信息或进行通信,则可能会使用IPC - 但如果情况并非如此,则可以替换它们。