我正在开发一个在整个地方都使用boost::interprocess_mutex
的项目,即使应用程序从来都不是fork()
个孩子,但是很大程度上依赖于多线程。
假设所有这些interprocess_mutex
es可以被进程本地互斥锁替换而不破坏任何内容是否正确?
我的假设是,这可能会提高性能(如果只是一个最小因素)正确吗?
在单个(可选的多线程)进程中使用进程间同步是否有任何可能的原因?
答案 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 - 但如果情况并非如此,则可以替换它们。