当我在某些情况下不想要同步开销而在其他情况下不想要真正的互斥锁时,我发现插入null_mutex
(当前)的能力非常有用。boost::interprocess::null_mutex
我正在尝试使用新的 c++11mutex
类,但我没有看到等效的null_mutex
- 这让我感到困惑..
是的,我知道实施起来很简单(或者我可以继续使用 boost,但我尽可能地尝试坚持标准并且似乎是一个小小的遗漏?)
您可以通过创建概念的“空”实现来相当简单地做到这一点Lockable
:
struct null_mutex
{
void lock() {}
void unlock() noexcept {}
bool try_lock() { return true; }
};
这将适用于 std::lock_guard:
null_mutex mux;
std::lock_guard<null_mutex> guard(mux);