调了一下,默认用文件来实现的,所以直接杀进程可能有残留问题。
有个宏BOOST_INTERPROCESS_WINDOWS,可以让boost用windows api来实现。我刚看的就是这个分支。
https://www.boost.org/doc/libs/1_75_0/boost/interprocess/sync/named_mutex.hpp
#if defined(BOOST_INTERPROCESS_NAMED_MUTEX_USES_POSIX_SEMAPHORES)
#include <boost/interprocess/sync/posix/named_mutex.hpp>
#define BOOST_INTERPROCESS_USE_POSIX_SEMAPHORES
#elif !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_WINDOWS)
#include <boost/interprocess/sync/windows/named_mutex.hpp>
#define BOOST_INTERPROCESS_USE_WINDOWS
#else
#include <boost/interprocess/sync/shm/named_mutex.hpp>
#endif
【 在 rogerr 的大作中提到: 】
: 自己试一下就知道了,最简单的
: bip::named_mutex mutex(bip::open_or_create, name_);
: bip::scoped_lock<bip::named_mutex> lock(mutex);
: ...................
--
修改:z16166 FROM 125.35.123.*
FROM 125.35.123.*