boost::interprocess_mutex 与进程本地 boost::mutex
Posted
技术标签:
【中文标题】boost::interprocess_mutex 与进程本地 boost::mutex【英文标题】:boost::interprocess_mutex vs process local boost::mutex 【发布时间】:2012-12-04 13:13:32 【问题描述】:我正在开发一个在所有地方都使用boost::interprocess_mutex
es 的项目,尽管该应用程序甚至从来没有fork()
s 孩子,但严重依赖于多线程。
假设所有这些interprocess_mutex
es 可以被进程本地互斥体替换而不破坏任何东西是否正确?
我认为这可能会提高性能(如果只是通过最小的因素)的假设是否正确?
在单个(可选多线程)进程中使用进程间同步是否有任何可以想象的理由?
【问题讨论】:
它是否使用共享内存?该内存是否被多个应用程序使用?这就是测试 - 它不必分叉,可能有不同的代码库(单独的可执行文件)共享一些资源。 (但如果不是,我会猜你可以使用普通的互斥锁) 【参考方案1】:它是否使用共享内存或其他 IPC 机制?该内存是否被多个应用程序使用?那就是测试...
它不必分叉,可能有不同的代码库(单独的可执行文件)共享一些资源。例如,是否有一个监控应用程序或接口在应用程序通过某种 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 - 但如果您不是这种情况,那么您可能可以替换它们。
【讨论】:
以上是关于boost::interprocess_mutex 与进程本地 boost::mutex的主要内容,如果未能解决你的问题,请参考以下文章