这个宏确实有用,可我不知道怎样才能使用windows mutex,因为要使用windows mutex
还需要未定义BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION,
#elif !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST
_INTERPROCESS_WINDOWS)
#include <boost/interprocess/sync/windows/named_mutex.hpp>
而这个named_mutex.hpp包含了workaround.hpp,在这个hpp里定义了这个宏:
#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
#define BOOST_INTERPROCESS_WINDOWS
#define BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION
#define BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME
我在named_mutex.hpp包含workaround.hpp后undef BOOST_INTERPROCESS_FORCE_GENERI
C_EMULATION是测试成功的,可怎么能在不改boost程序的前提下达成目的?
我倒是可以直接包含windows/named_mutex.hpp。可一来mtx定义要改成bip::ipcdetail::windows_named_mutex,二来默认那个hpp头上那眼花撩换的#if#elif是起什么作用的...
【 在 z16166 (Netguy) 的大作中提到: 】
: 调了一下,默认用文件来实现的,所以直接杀进程可能有残留问题。
: 有个宏BOOST_INTERPROCESS_WINDOWS,可以让boost用windows api来实现。我刚看的就是这个分支。
:
https://www.boost.org/doc/libs/1_75_0/boost/interprocess/sync/named_mutex.hpp: ...................
--
修改:rogerr FROM 124.64.18.*
FROM 124.64.18.*