Phi*_*Lab 7 c++ std visual-c++ c++11 c++17
Visual Studio Professional 2019 项目(版本 16.3.6)中的以下代码产生警告:
#include <thread>
#include <future>
class Foo {
public:
mutable std::recursive_mutex _writingMutex;
std::recursive_mutex& writingMutex() const { return _writingMutex; }
};
int main()
{
Foo a;
std::lock_guard<std::recursive_mutex> lock(a.writingMutex()); // produces C26110
std::lock_guard<std::recursive_mutex> lock2(a._writingMutex); // no warning
}
Run Code Online (Sandbox Code Playgroud)
第一个锁产生警告C26110:
警告 C26110 调用方未能在调用函数“std::lock_guard::~lock_guard”之前保持锁定“lock”
为什么会这样?将互斥锁作为参考传递不起作用吗?