#include <iostream>
#include <mutex>
using namespace std;
class TestClass {
public : // members
std::mutex m_mutex;
int m_var;
public : //functions
TestClass()
:m_var(0) {};
void fooIncVar()
{
cout << "calling inc var" << endl;
std::scoped_lock lock(m_mutex);
_incVar();
}
private:
void _incVar()
{
std::scoped_lock lock(m_mutex);
m_var++;
cout << "var : " << m_var << endl;
}
};
int main()
{
cout<<"Hello World" << endl;
auto a = A();
a.fooIncVar();
return 0;
}
我试图了解 scoped_lock 如何与互斥锁一起使用。我期待下面的程序会挂起,因为我_incVar
通过持有互斥锁来调用,fooIncVar
因为变量的范围直到函数结束。但情况似乎并非如此。我得到以下输出
Hello World
calling inc var
var : 1