class MyClass
{
public:
MyClass() = default;
~MyClass() = default;
void funcA(int param)
{
withMutex([&] {
std::cout << param + 2<< std::endl;
});
}
void funcB( int param)
{
withMutex([&] {
std::cout << param +3<< std::endl;
});
}
private:
//将被保护的函数体封装到lamda表达式当中。
void withMutex(std::function<void()> && fn)
{
std::lock_guard<std::mutex> lock(mutex);
fn();
}
std::mutex mutex;
};
MyClass obj;
obj.funcA(0);
obj.funcB(0);
运行结果2,3