我对提升很陌生,只是想了解其中的一小部分——进程间互斥锁。
AFAIU,在使用文件锁的跨平台实现中有一个强大的互斥体仿真:http: //www.boost.org/doc/libs/1_62_0/boost/interprocess/detail/robust_emulation.hpp
这是为了模拟 posix 标准中可用的健壮互斥锁,但只有在平台特定版本不可用时才会使用通用方法。
#if !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_POSIX_PROCESS_SHARED)
#include <boost/interprocess/sync/posix/mutex.hpp>
#define BOOST_INTERPROCESS_USE_POSIX
//Experimental...
#elif !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_WINDOWS)
#include <boost/interprocess/sync/windows/mutex.hpp>
#define BOOST_INTERPROCESS_USE_WINDOWS
#elif !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED)
#include <boost/interprocess/sync/spin/mutex.hpp>
#define BOOST_INTERPROCESS_USE_GENERIC_EMULATION
但是在实际支持健壮互斥锁的posix系统上(我想这取决于内核版本),健壮互斥锁实际上并没有启用。http://www.boost.org/doc/libs/1_62_0/boost/interprocess/sync/posix/pthread_helpers.hpp
所以我不太了解这里的逻辑,posix 强大的互斥锁实现是否存在严重的性能损失,所以我们不想使用它?即便如此,至少应该有一个选项可以选择启用此功能。
为了解决这个问题,因为我是菜鸟,有没有办法让通用实现在 posix 实现上可用,以便我可以利用鲁棒性?