问题描述
#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
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)